如果类型的BindingGroup名称等于someName,请执行Do Work

时间:2013-02-19 20:09:08

标签: c# wpf xaml data-binding

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

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

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

例如,在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.Data.BindingGroup'和'string'类型的操作数

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

1 个答案:

答案 0 :(得分: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;
        }
    }
}