2016-01-06 98 views
1

我試圖應用雙向綁定到WPF單選按鈕。在XAML我有以下:XAML雙向綁定RadioButton IsChecked

<RadioButton IsChecked="{Binding IsActive, Mode=TwoWay}"/> 

和在各個視圖模型我有

private bool _isActive; 

public bool IsActive 
{ 
    get { return _isActive; } 
    set 
    { 
     _isActive = value; 
     OnPropertyChanged("IsActive"); 
    } 
} 

因爲我設置模式TwoWay我期待作爲我切換單選按鈕的IsActive屬性在視圖模型會相應地更新。然而,的setIsActive總是如此,所以單選按鈕總是打開。

我誤解了一個單選按鈕的TwoWay屬性,如果是的話,我該如何去實現預期的效果?

+0

在您的假設中,您是正確的,並且默認情況下IsChecked的綁定是TwoWay,因此您無需在綁定中指定它。在這裏肯定還有別的東西在玩,也許另一個單選按鈕正在導致它改變。你可以在IsActive集合中使用斷點來查看屬性值如何改變? –

+0

對於同樣從ToggleButton繼承的CheckBox,不要有這個問題。我可以使用它。 –

+0

@GlenThomas - value屬性始終爲真。用CheckBox代替RadioButton給出了正確的行爲,即在true和false之間切換。 –

回答

1

您實際上無法通過單擊單個RadioButton來切換它。你可能想在這裏使用複選框或者ToggleButton。

如果你想使用RadioButtons,你至少需要使用其中的兩個。在每個RadioButton的IsActive屬性的setter內部,您必須取消其他按鈕的設置。

還有其他替代方法,例如,您可以將所有RadioButtons綁定到單個枚舉屬性並使用轉換器。有關示例,請參閱: http://wpftutorial.net/RadioButton.html

+0

很高興知道。使用CheckBox –