1

チェックボックスのセットのバインディング グループが、チェックボックスのリストを設定したバインディング グループの名前と等しいかどうかを確認しようとしています。

foreach ループを使用すると、"Accessories" という名前のグループ ボックスで子を見つけることができます。

Accessories グループボックス内に、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>

グループボックスには全部で 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' のオペランドに適用できません

特定のチェックボックスのみが変更されるように、チェックボックスのバインディング グループを参照するにはどうすればよいですか?

4

1 に答える 1

0

BindingGroupプロパティのタイプはですSystem.Windows.Data.BindingGroupNameMSDN ページを確認すると、そのプロパティを照会できるはずです。

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 に答える