我正在尝试将两个复选框绑定在一起,以便在选中一个复选框时,禁用另一个复选框。
现在我只想努力工作。绑定一个,以便在未选中时,禁用其绑定的其他元素。最终我希望它与被检查的内容相反(只检查一个或另一个。)我知道我将不得不使用转换器。 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>
答案 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>