2013-03-28 112 views
0

我想將2個複選框綁定在一起,以便當一個被選中時,另一個複選框被禁用。WPF綁定與2複選框

現在我只是想讓任何東西上班。綁定一個,以便如果未選中,則綁定的其他元素將被禁用。最終,我希望它是任何被檢查的逆(只有一個或另一個檢查。)我知道我將不得不使用一個轉換器。 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> 
+2

你認爲單選按鈕? http://msdn.microsoft.com/en-us/library/system.windows.controls.radiobutton.aspx – Paparazzi

+0

這就是爲什麼BG給了我們無線電臺。 – Will

+0

是的,我考慮過單選按鈕。在我的情況下,它不會工作,因爲我想能夠有3個選項:一個選中,另一個選中,或者不選中。如果我做一個單選按鈕,而不是像複選框那樣取消選中它。 – aoakeson

回答

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>