捕获从主窗体上的用户控件_multiple_点击事件(XAML)(Capturing _multip

2019-11-04 05:21发布

在谈到这个问题,这是昨天回答:

如何捕获点击事件上的特定按钮,从主要形式的用户控制

我现在面对的,我有一个“仪表板”用户控件的问题,所以现在我要多点击事件添加到同一个用户的控制。

发生了什么事,虽然是似乎只有第一次轻触事件被触发。

救命?

(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>

Answer 1:

您需要注册为独立于上的MainPage的Page03事件,而不是为他们创造新的处理程序。 见下文

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

调用AddHandler的线条,正在注册的事件处理程序的新,我认为这是造成你一些混乱。 您可能需要阅读了一下有关活动的详情这里: https://msdn.microsoft.com/en-us/library/ms742806(v=vs.100).aspx



Answer 2:

我想到了。 这是因为我怎么显示/隐藏用户控制是通过改变不透明度:

<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页的顺序,并开始工作。 所以,现在变成具有可显示/隐藏的用户控件,同时保留动画故事板,但没有他们实际上只是“隐藏”与真正让他们看得见的任务/坍塌。



文章来源: Capturing _multiple_ tap events on a usercontrol from a main form (XAML)