委派WPF活动

时间:2017-08-10 10:55:47

标签: c# wpf events

我有一个带有以下XAML代码的WPF项目:

 <GroupBox Name="GroupBox1">
     <GroupBox.Header>
         <WrapPanel>
             <CheckBox Name="CheckBox1"/>
             <Label Name="label1" Content="Extend" MouseLeftButtonUp="Label_Click" />
        </WrapPanel>
    </GroupBox.Header>
</GroupBox>

我有多个GroupBoxes。我想点击Checkbox1.IsChecked更改label1媒体资源。

目前我的代码隐藏在其中:

private void Label_Click(object sender, MouseButtonEventArgs e)
{
    CheckBox1.IsChecked = !CheckBox1.IsChecked;
}

我希望避免为每个GroupBox编写该操作。

问题:如何从checkBox1中的sender动态获取Label_Click

2 个答案:

答案 0 :(得分:2)

将此处理程序添加到标签中:

private void Label_Click(object sender, MouseButtonEventArgs e)
{
    Label lb = (Label) sender;
    WrapPanel wp = (WrapPanel) lb.Parent;
    CheckBox cb= wp.Children.OfType<CheckBox>().FirstOrDefault();
    if (cb!= null)
    {            
        cb.IsChecked = !cb.IsChecked;
    }
}

编辑了有关vc 74评论的代码。 @vc 74:thx

答案 1 :(得分:1)

试试这个:

private void Label_Click(object sender, MouseButtonEventArgs e)
{
   var checkbox = ((sender as Label).Parent as WrapPanel).Children.OfType<CheckBox>().FirstOrDefault();
   checkbox.IsChecked = !checkbox.IsChecked;
}