我有一个带有以下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
。
答案 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;
}