0

2つのチェックボックスをバインドして、1つがチェックされるともう1つのチェックボックスが無効になるようにしようとしています。

今、私は何かを機能させようとしています。1 つをバインドして、チェックされていない場合、バインドされている他の要素が無効になるようにします。最終的には、チェックされているものの逆になりたいです(どちらか一方だけをチェックするため)。そのためにコンバーターを使用する必要があることはわかっています。IsEnabled プロパティだけでなく、IsChecked バインディングが適切に機能しています。どんな助けでも大歓迎です。

<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>
4

1 に答える 1

2

両方のチェックボックスは、個別の名前スコープであるテンプレート内で宣言されているため、ElementName バインディングを行うために互いの名前を確認することはできません。これを回避するには、2 つに共通のデータにバインドする必要があります。これは、既に持っているように見えます。

<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>
于 2013-03-28T21:05:42.493 に答える