从主窗体(XAML)捕获用户控件上的_multiple_ tap事件

时间:2016-04-07 15:39:42

标签: c# wpf xaml user-controls

参考昨天回答的这个问题:

How to capture tap event on specific button in user control from main form

我现在面临的问题是我有一个"仪表板" usercontrol,所以现在我必须向同一个用户控件添加多个tap事件。

发生的事情似乎只是第一次敲击事件正在开始。

帮助?

(第03页是有问题的一个)

的MainForm:

public MainPage() {
        InitializeComponent();

        Page02.CloseButtonTapped += Page02_CloseButtonTapped;
        Page03.CloseButtonTapped += Page03_CloseButtonTapped;
        Page11.CloseButtonTapped += Page11_CloseButtonTapped;

        Page03.CommandControlTapped += Page03_CommandControlTapped;

    }

page03:

public delegate void CloseButtonTappedHandler(object sender, TappedRoutedEventArgs e);
public delegate void CommandControlTappedHandler(object sender, TappedRoutedEventArgs e);

public sealed partial class Page03 : UserControl {
    public event CloseButtonTappedHandler CloseButtonTapped;
    public event CommandControlTappedHandler CommandControlTapped;

    public Page03() {
        this.InitializeComponent();

        this.imgCloseButton.Tapped += new TappedEventHandler(this.imgCloseButton_Tapped);
        this.imgTraining.Tapped += new TappedEventHandler(this.imgTraining_Tapped);
        this.imgCommandControl.Tapped += new TappedEventHandler(this.imgCommandControl_Tapped);
    }

    private void imgCloseButton_Tapped(object sender, TappedRoutedEventArgs e) {
        if (CloseButtonTapped != null) {
            CloseButtonTapped(sender, e);
        }
    }

    private void imgCommandControl_Tapped(object sender, TappedRoutedEventArgs e) {
        if (CommandControlTapped != null) {
            CommandControlTapped(sender, e);
        }
    }

    private void imgTraining_Tapped(object sender, TappedRoutedEventArgs e) {
        if (CommandControlTapped != null) {
            CommandControlTapped(sender, e);
        }
    }
}

Page03用户控制XAML :(那里有一堆布局内容,线条形状等)

<UserControl
x:Class="Raytheon.Page03"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:Raytheon"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
d:DesignHeight="918"
d:DesignWidth="1818" Background="Gray">
<Grid>
    <Rectangle HorizontalAlignment="Left" Height="48" Margin="625,416,0,0" StrokeThickness="3" VerticalAlignment="Top" Width="557" Opacity="0.5">
        <Rectangle.Fill>
            <SolidColorBrush Color="White" Opacity="0.85"/>
        </Rectangle.Fill>
    </Rectangle>
    <Rectangle HorizontalAlignment="Left" Height="1457.34" Margin="896.467,-53.724,0,-485.616" VerticalAlignment="Top" Width="9" Opacity="0.5" StrokeThickness="3" RenderTransformOrigin="0.5,0.5" UseLayoutRounding="False" d:LayoutRounding="Auto">
        <Rectangle.RenderTransform>
            <CompositeTransform Rotation="-90" ScaleX="-1"/>
        </Rectangle.RenderTransform>
        <Rectangle.Fill>
            <SolidColorBrush Color="White" Opacity="0.85"/>
        </Rectangle.Fill>
    </Rectangle>
    <Rectangle HorizontalAlignment="Left" Height="1457.345" Margin="896.467,-523.224,0,-16.121" VerticalAlignment="Top" Width="9" Opacity="0.5" StrokeThickness="3" RenderTransformOrigin="0.5,0.5" UseLayoutRounding="False" d:LayoutRounding="Auto">
        <Rectangle.RenderTransform>
            <CompositeTransform Rotation="-90" ScaleX="-1"/>
        </Rectangle.RenderTransform>
        <Rectangle.Fill>
            <SolidColorBrush Color="White" Opacity="0.85"/>
        </Rectangle.Fill>
    </Rectangle>
    <Rectangle HorizontalAlignment="Left" Height="478" Margin="396,201,0,0" VerticalAlignment="Top" Width="9" Opacity="0.5" StrokeThickness="3">
        <Rectangle.Fill>
            <SolidColorBrush Color="White" Opacity="0.85"/>
        </Rectangle.Fill>
    </Rectangle>
    <Image x:Name="image" HorizontalAlignment="Left" Height="72" Margin="665,404,0,0" VerticalAlignment="Top" Width="467" Source="Assets/1920x1080_TailoredSolutions.png"/>
    <Image x:Name="image1" HorizontalAlignment="Left" Height="69" Margin="126,296,0,0" VerticalAlignment="Top" Width="249" Source="Assets/1920x1080_Text_Training.png"/>
    <Rectangle HorizontalAlignment="Left" Height="228" Margin="506.55,325.193,0,0" VerticalAlignment="Top" Width="9" Opacity="0.5" StrokeThickness="3" RenderTransformOrigin="0.5,0.5" UseLayoutRounding="False" d:LayoutRounding="Auto">
        <Rectangle.RenderTransform>
            <CompositeTransform Rotation="-90" ScaleX="-1"/>
        </Rectangle.RenderTransform>
        <Rectangle.Fill>
            <SolidColorBrush Color="White" Opacity="0.85"/>
        </Rectangle.Fill>
    </Rectangle>
    <Rectangle HorizontalAlignment="Left" Height="478" Margin="1402,201,0,0" VerticalAlignment="Top" Width="9" Opacity="0.5" StrokeThickness="3">
        <Rectangle.Fill>
            <SolidColorBrush Color="White" Opacity="0.85"/>
        </Rectangle.Fill>
    </Rectangle>
    <Rectangle HorizontalAlignment="Left" Height="228" Margin="1291.55,325.193,0,0" VerticalAlignment="Top" Width="9" Opacity="0.5" StrokeThickness="3" RenderTransformOrigin="0.5,0.5" UseLayoutRounding="False" d:LayoutRounding="Auto">
        <Rectangle.RenderTransform>
            <CompositeTransform Rotation="-90" ScaleX="-1"/>
        </Rectangle.RenderTransform>
        <Rectangle.Fill>
            <SolidColorBrush Color="White" Opacity="0.85"/>
        </Rectangle.Fill>
    </Rectangle>
    <Rectangle HorizontalAlignment="Left" Height="214" Margin="1076,201,0,0" VerticalAlignment="Top" Width="9" Opacity="0.5" StrokeThickness="3">
        <Rectangle.Fill>
            <SolidColorBrush Color="White" Opacity="0.85"/>
        </Rectangle.Fill>
    </Rectangle>
    <Rectangle HorizontalAlignment="Left" Height="214" Margin="1076,466,0,0" VerticalAlignment="Top" Width="9" Opacity="0.5" StrokeThickness="3">
        <Rectangle.Fill>
            <SolidColorBrush Color="White" Opacity="0.85"/>
        </Rectangle.Fill>
    </Rectangle>
    <Rectangle HorizontalAlignment="Left" Height="214" Margin="731,201,0,0" VerticalAlignment="Top" Width="9" Opacity="0.5" StrokeThickness="3">
        <Rectangle.Fill>
            <SolidColorBrush Color="White" Opacity="0.85"/>
        </Rectangle.Fill>
    </Rectangle>
    <Rectangle HorizontalAlignment="Left" Height="214" Margin="731,466,0,0" VerticalAlignment="Top" Width="9" Opacity="0.5" StrokeThickness="3">
        <Rectangle.Fill>
            <SolidColorBrush Color="White" Opacity="0.85"/>
        </Rectangle.Fill>
    </Rectangle>
    <Image x:Name="imgCloseButton" HorizontalAlignment="Left" Height="111" Margin="1669,30,0,0" VerticalAlignment="Top" Width="111" Source="Assets/CloseButton.png" Tapped="imgCloseButton_Tapped"/>
    <Image x:Name="txtSustainment" HorizontalAlignment="Left" Height="69" Margin="439,296,0,0" VerticalAlignment="Top" Width="249" Source="Assets/1920x1080_Text_Sustainment.png"/>
    <Image x:Name="txtCommunicaton" HorizontalAlignment="Left" Height="69" Margin="1134,296,0,0" VerticalAlignment="Top" Width="249" Source="Assets/1920x1080_Text_Communications.png"/>
    <Image x:Name="txtFixedSensors" HorizontalAlignment="Left" Height="69" Margin="1438,296,0,0" VerticalAlignment="Top" Width="249" Source="Assets/1920x1080_Text_FixedSensors.png"/>
    <Image x:Name="txtPhysicalSecurity" HorizontalAlignment="Left" Height="86" Margin="1438,775,0,0" VerticalAlignment="Top" Width="270" Source="Assets/1920x1080_Text_PhysicalSecurity.png"/>
    <Image x:Name="txtPlatformUpgrades" HorizontalAlignment="Left" Height="88" Margin="1132,773,0,0" VerticalAlignment="Top" Width="279" Source="Assets/1920x1080_Text_PlatformUpgrades.png"/>
    <Image x:Name="txtDataAnalytics" HorizontalAlignment="Left" Height="88" Margin="783,773,0,0" VerticalAlignment="Top" Width="279" Source="Assets/1920x1080_Text_DataAnalytics.png"/>
    <Image x:Name="txtDistributedSensors" HorizontalAlignment="Left" Height="69" Margin="439,763,0,0" VerticalAlignment="Top" Width="249" Source="Assets/1920x1080_Text_DistributedSensors.png"/>
    <Image x:Name="txtMobileSensors" HorizontalAlignment="Left" Height="69" Margin="126,763,0,0" VerticalAlignment="Top" Width="249" Source="Assets/1920x1080_Text_MobileSensors.png"/>
    <Image x:Name="txtCommandControl" HorizontalAlignment="Left" Height="69" Margin="783,296,0,0" VerticalAlignment="Top" Width="249" Source="Assets/1920x1080_Text_CommandControl.png"/>

    <Image x:Name="imgTraining" HorizontalAlignment="Left" Height="224" Margin="128,94,0,0" VerticalAlignment="Top" Width="234" Source="Assets/1920x1080_Icon_Training.png" Tapped="imgTraining_Tapped"/>
    <Image x:Name="imgSustainment" HorizontalAlignment="Left" Height="224" Margin="441,94,0,0" VerticalAlignment="Top" Width="234" Source="Assets/1920x1080_Icon_Sustainment.png"/>
    <Image x:Name="imgCommunications" HorizontalAlignment="Left" Height="224" Margin="1136,94,0,0" VerticalAlignment="Top" Width="234" Source="Assets/1920x1080_Icon_Communications.png"/>
    <Image x:Name="imgMobileSensors" HorizontalAlignment="Left" Height="224" Margin="128,561,0,0" VerticalAlignment="Top" Width="234" Source="Assets/1920x1080_Icon_MobileSensors.png"/>
    <Image x:Name="imgDistributedSensors" HorizontalAlignment="Left" Height="224" Margin="441,561,0,0" VerticalAlignment="Top" Width="234" Source="Assets/1920x1080_Icon_DistributedSensors.png"/>
    <Image x:Name="imgDataAnalytics" HorizontalAlignment="Left" Height="224" Margin="785,561,0,0" VerticalAlignment="Top" Width="234" Source="Assets/1920x1080_Icon_DataAnalytics.png"/>
    <Image x:Name="imgPlatformUpgrades" HorizontalAlignment="Left" Height="224" Margin="1136,561,0,0" VerticalAlignment="Top" Width="234" Source="Assets/1920x1080_Icon_PlatformUpgrades.png"/>
    <Image x:Name="imgFixedSensors" HorizontalAlignment="Left" Height="224" Margin="1440,94,0,0" VerticalAlignment="Top" Width="234" Source="Assets/1920x1080_Icon_FixedSensors.png"/>
    <Image x:Name="imgPhysicalSecurity" HorizontalAlignment="Left" Height="224" Margin="1440,561,0,0" VerticalAlignment="Top" Width="234" Source="Assets/1920x1080_Icon_PhysicalSecurity.png"/>
    <Image x:Name="imgCommandControl" HorizontalAlignment="Left" Height="224" Margin="785,94,0,0" VerticalAlignment="Top" Width="234" Source="Assets/1920x1080_Icon_CommandControl.png"  Tapped="imgCommandControl_Tapped"/>
</Grid>
</UserControl>

2 个答案:

答案 0 :(得分:0)

您需要在MainPage中单独注册Page03上的事件,而不是为它们创建新的处理程序。见下文

Page03.CloseButtonTapped += MethodToHandleEvent
Page03.Page11Tapped += MethodToHandleEvent

调用AddHandler的行正在为事件注册新的处理程序,我认为这会引起一些混乱。您可以在此处阅读更多有关事件的信息:https://msdn.microsoft.com/en-us/library/ms742806(v=vs.100).aspx

答案 1 :(得分:0)

我明白了。这是因为我显示/隐藏用户控件的方式是改变不透明度:

<local:Page01 Margin="53,156,8,10" x:Name="Page01" />
    <local:Page02 Margin="53,156,8,30" x:Name="Page02" Opacity="0"/>
    <local:Page11 Margin="53,156,8,30" x:Name="Page11" Opacity="0"/>
    <local:Page03 Margin="53,156,8,30" x:Name="Page03" Opacity="0"/>

所以我换了第11页和第3页的顺序,它开始工作了。所以现在变成了在保留故事板动画的同时显示/隐藏用户控件的任务,但实际上并没有让它们隐藏&#34; vs实际上使它们可见/崩溃。