2010-06-22 109 views
1

我已阅读帖子Button.MouseDown 接下来我要问另外1个问题。 我的XAML如下:WPF如何将事件传递给兄弟元素

<Window.Resources> 
    <Style TargetType="{x:Type ContentControl}"> 
     <Setter Property="BorderThickness" Value="5" /> 
     <Setter Property="Padding" Value="10" /> 
     <Setter Property="Background" Value="PaleGreen" /> 
     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="{x:Type ContentControl}"> 
        <Border Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Padding="{TemplateBinding Padding}"> 
         <ContentPresenter/> 
        </Border> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 
</Window.Resources> 

<StackPanel Tag="Panel" PreviewMouseDown="PreviewMouseDown" MouseDown="MouseDown"> 
    <ContentControl BorderBrush="Red" Tag="C1" PreviewMouseDown="PreviewMouseDown" MouseDown="MouseDown"> 
     <ContentControl BorderBrush="Green" Tag="C2" PreviewMouseDown="PreviewMouseDown" MouseDown="MouseDown"> 
      <StackPanel Tag="Panel2" PreviewMouseDown="PreviewMouseDown" MouseDown="MouseDown"> 
       <ContentControl Content="Click Me" BorderBrush="Blue" Tag="C3" PreviewMouseDown="PreviewMouseDown" MouseDown="MouseDown"/> 
       <ContentControl Content="Click Me2" BorderBrush="Blue" Tag="C33" PreviewMouseDown="PreviewMouseDown" MouseDown="MouseDown"/> 
      </StackPanel> 
     </ContentControl> 
    </ContentControl> 
</StackPanel> 

我的CS如下:

 private void PreviewMouseDown(object sender, MouseButtonEventArgs e) 
    { 
     Debug.WriteLine(((FrameworkElement) sender).Tag + " Preview"); 
    } 

    private void MouseDown(object sender, MouseButtonEventArgs e) 
    { 
     Debug.WriteLine(((FrameworkElement) sender).Tag + " Bubble"); 
    } 

我如何可以将鼠标向上从C3 /事件以C33?基本上我希望来自1个兄弟姐妹的所有事件也能达到其他。抛开

private void C3_MouseDown(object sender, MouseButtonEventArgs e) 
{ 
    C33.RaiseEvent(e); 
} 

作为,我注意到你正在使用标签来命名元素:

回答

3

从C3的事件处理程序可以调用C33的方法的RaiseEvent。一个更合适的属性用于这将是Name属性。一般的规则是使用标签属性只适用于WPF程序的0.001%(1/100,000)。在所有常用的情况下,有更好的方法来做同样的事情。