2016-04-07 81 views
0

:bir ana formdan bir usercontrol üzerinde _multiple_ musluk olayları yakalama (XAML) dün cevap verilmiştir Bu soruya istinaden

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

Ben şimdi bir "gösterge tablosu" usercontrol var sorunla karşı karşıya am Şimdi, aynı kullanıcı kontrolüne birden fazla dokunma etkinliği eklemem gerekiyor.

Ancak neler oluyor, sadece ilk musluk olayı ateşleniyor gibi görünüyor.

Yardım?

(sayfa 03, söz konusu biridir)

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 Kullanıcı Kontrol XAML: (düzen şeyler bir grup orada var, satır şekilleri, vs)

<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> 
+0

Süper millet burada sıkışmış. @oppassum, yardımcı olabilir misiniz? – mdrussell0779

cevap

0

Ana Sayfa'da ayrı ayrı Page03 olayları için kayıt olmanız ve bunlar için yeni işleyiciler oluşturmamanız gerekir. AddHandler çağırarak hatları, etkinlikler için yeni işleyicileri kayıt ediyoruz

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

aşağıya bakın ve bu size biraz karışıklığa neden olduğunu düşünüyorum. Olaylarla ilgili daha fazla bilgi edinmek isteyebilirsiniz: https://msdn.microsoft.com/en-us/library/ms742806(v=vs.100).aspx

+0

İlginç. Bu gibi gittim: , Page02.CloseButtonTapped + = Page02_CloseButtonTapped; Page03.CloseButtonTapped + = Page03_CloseButtonTapped; Page11.CloseButtonTapped + = Page11_CloseButtonTapped; Page03.Page11Tapped + = imgCommandControl_Tapped; ancak yalnızca kapat düğmesi olayları tetikleniyor. – mdrussell0779

+0

Sadece bir mesaj kutusu olayını ana forma hiçbir şey yapıştırmadan bu görüntüye bağlamayı denedim ve ateş etmiyordu, bu yüzden şimdi çok kafam karıştı :) – mdrussell0779

+0

Page11Tapped olayının Page03 kontrolünden ateş ettiğinden emin misiniz? Hata ayıklamanız ve Page03'ten doğru bir şekilde ateşlendiğini kontrol etmeli ve ardından MainPage'de doğru şekilde işlenip işlenmediğini kontrol etmelisiniz. – momar

0

Bunu çözdüm. Ben gösteriyorum nasıl/kullanıcı kontrolleri gizleme opaklığını değiştirerek yoluyla çünkü var:

<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"/> 

yüzden sayfa 11 ve sayfa 3 sırasını takas ve çalışmaya başladı. Öyleyse, şimdi, storyboard animasyonunu korurken kullanıcı kontrollerini gösterme/gizleme, ancak aslında onları gerçekten "gizli" olarak görmeme ve onları görünür/daraltma gibi yapma zorunluluğu haline geliyor.

+0

Sorunu çözdüğünüz için harika. Siparişin doğru olduğundan emin olmak için Canvas.ZIndex'e bakmanızı öneririm. Detaylar için buraya bakın: https://blogs.msdn.microsoft.com/wpfsdk/2006/06/13/controlling-z-order-using-the-zindex-property/ – momar