2016-01-06 74 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 –