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



关于昨天回答的这个问题:

如何从主窗体捕获用户控件中特定按钮上的点击事件

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

然而,现在的情况是,似乎只有第一个tap事件在启动。

帮助?

(第03页有问题)

主要形式:

public MainPage() {
        InitializeComponent();
        Page02.CloseButtonTapped += Page02_CloseButtonTapped;
        Page03.CloseButtonTapped += Page03_CloseButtonTapped;
        Page11.CloseButtonTapped += Page11_CloseButtonTapped;
        Page03.CommandControlTapped += Page03_CommandControlTapped;
    }

第03页:

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>

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

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

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

我想明白了。这是因为我如何显示/隐藏用户控件是通过改变不透明度:

<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页的顺序,它开始工作了。因此,现在的任务是必须显示/隐藏用户控件,同时保留故事板动画,但不是让它们真正"隐藏",而不是让它们可见/折叠。

最新更新