c# - 委托(delegate) WPF 事件

标签 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>

我有不止一个这样的 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/

相关文章:

c# - 在 GridView 中选择单个 RadioButton

c# - 命令 - 从 DataGridTemplateColumn 绑定(bind)

javascript - 为什么 Firefox 开发者控制台引用的是 script.js?

java - JButton 和 ActionListener 在 java.awt、安全性和事件中产生多个异常?

c# - 在 c# 中需要有关多播 udp 服务器发现的帮助

c# - 具有@符号的列名

c# - 检查是否所有复选框都未选中 C# WPF

javascript - Firefox 与 IE/Chrome 中的事件处理程序

c# - 在 WIndow 服务中捕获 KeyPress 事件

c# - 未设置 WPF 依赖属性