WPF与2个复选框绑定

时间:2013-03-28 20:50:08

标签: c# wpf binding checkbox

我正在尝试将两个复选框绑定在一起,以便在选中一个复选框时,禁用另一个复选框。

现在我只想努力工作。绑定一个,以便在未选中时,禁用其绑定的其他元素。最终我希望它与被检查的内容相反(只检查一个或另一个。)我知道我将不得不使用转换器。 IsChecked绑定工作正常,而不是IsEnabled属性。任何帮助将不胜感激。

<GridViewColumn.CellTemplate>
     <DataTemplate>
          <Grid HorizontalAlignment="Stretch">
               <CheckBox Name="kioskRequiredCB"  IsChecked="{Binding DefaultKioskAsRequired}" IsEnabled="{Binding ElementName=kioskHiddenCB, Path=IsChecked,Mode=TwoWay}" />
           </Grid>
      </DataTemplate>
 </GridViewColumn.CellTemplate>

<GridViewColumn.CellTemplate>
     <DataTemplate>
          <Grid HorizontalAlignment="Stretch">
                <CheckBox Name="kioskHiddenCB"  IsChecked="{Binding DefaultKioskAsHidden}" IsEnabled="{Binding ElementName=kioskRequiredCB, Path=IsChecked,Mode=TwoWay}" />
          </Grid>
      </DataTemplate>
 </GridViewColumn.CellTemplate>

1 个答案:

答案 0 :(得分:2)

您的两个复选框都在模板中声明,这些模板是单独的名称范围,因此无法看到彼此的名称来执行ElementName绑定。要解决这个问题,你需要绑定到两者共有的数据,它们看起来像你已经拥有的那样:

<GridViewColumn.CellTemplate>
     <DataTemplate>
          <Grid HorizontalAlignment="Stretch">
               <CheckBox Name="kioskRequiredCB"  IsChecked="{Binding DefaultKioskAsRequired}"
                         IsEnabled="{Binding DefaultKioskAsHidden, Converter={StaticResource SomeInvertingBooleanConverter}" />
           </Grid>
      </DataTemplate>
 </GridViewColumn.CellTemplate>

<GridViewColumn.CellTemplate>
     <DataTemplate>
          <Grid HorizontalAlignment="Stretch">
                <CheckBox Name="kioskHiddenCB"  IsChecked="{Binding DefaultKioskAsHidden}"
                          IsEnabled="{Binding DefaultKioskAsRequired, Converter={StaticResource SomeInvertingBooleanConverter}}" />
          </Grid>
      </DataTemplate>
 </GridViewColumn.CellTemplate>