1

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

使用 foreach 循环,我可以在名为“附件”的分组框中找到子项。

在附件组框内,我有一个属于 2 个不同 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>

我在 groupbox 中有 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.Data.BindingGroup”和“字符串”类型的操作数

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

4

1 回答 1

0

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;
        }
    }
}
于 2013-02-19T23:45:04.287 回答