如果类型的BindingGroup名称等于someName,则执行工作

本文关键字:someName 执行 工作 类型 BindingGroup 如果 | 更新日期: 2023-09-27 18:00:06

我正在尝试检查一组复选框的绑定组是否等于我将复选框列表设置为的绑定组的名称。

使用foreach循环,我可以在一个名为"Accessories"的分组框中找到孩子。

在"附件"组框中,我有一个属于两个不同BindingGroups的复选框列表。

例如,在xaml中,我有:

          <CheckBox Name="AccessoriesSpareBattery"
                      BindingGroup="523S"
                      HorizontalAlignment="Left" Margin="71,117,0,0" VerticalAlignment="Top" 
                      Checked="AccessoriesSpareBattery_Checked">
                <TextBlock TextWrapping="Wrap" Text="Spare Battery"/>
            </CheckBox>

我在分组框中总共有5个附件,每个附件的绑定组都设置为"5233"或"523S"

代码:

    private void S5233_Checked(object sender, RoutedEventArgs e)
    {
        foreach (var c in Accessories.Children.OfType<CheckBox>())
        {
            if (c.BindingGroup == "523S")
            {
                c.IsEnabled = true;
            }
        }
    }

此代码块将遍历附件组框中的每个复选框。但是,当我尝试构建时,if语句会给我以下错误。

错误CS0019:运算符"=="不能应用于"System"类型的操作数。Windows。数据BindingGroup和字符串

如何引用复选框的绑定组,以便只更改那些特定的复选框?

如果类型的BindingGroup名称等于someName,则执行工作

BindingGroup属性的类型为System.Windows.Data.BindingGroup。检查MSDN页面,您应该能够查询它的Name属性:

private void S5233_Checked(object sender, RoutedEventArgs e)
{
    foreach (var c in Accessories.Children.OfType<CheckBox>())
    {
        if (c.BindingGroup.Name == "523S")
        {
            c.IsEnabled = true;
        }
    }
}