我有一个包含以下 XAML 代码的 WPF 项目:
<GroupBox Name="GroupBox1">
<GroupBox.Header>
<WrapPanel>
<CheckBox Name="CheckBox1"/>
<Label Name="label1" Content="Extend" MouseLeftButtonUp="Label_Click" />
</WrapPanel>
</GroupBox.Header>
</GroupBox>
我有不止一个这样的 GroupBox。我想通过单击 label1
来更改 Checkbox1.IsChecked
属性。
目前我的代码隐藏中有:
private void Label_Click(object sender, MouseButtonEventArgs e)
{
CheckBox1.IsChecked = !CheckBox1.IsChecked;
}
我想避免为每个 GroupBox
编写该操作。
问题:如何从 Label_Click
中的 sender
动态获取 checkBox1
。
最佳答案
将此处理程序添加到您的标签中:
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:谢谢
关于c# - 委托(delegate) WPF 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45611779/