我有一个数据绑定的问题。我正在使用MVVM Light。DataBinding RadioButton IsSelected只能工作一次
当我在我的视图模型中的一个布尔的setter上设置一个断点并选择相应的单选按钮时,调试器暂停,并且看起来都很好。
然后当我继续时,选择另一个单选按钮并再次选择第一个单选按钮,调试器不停止。出了什么问题?
我有二两单选按钮:
<RadioButton Margin="5" Grid.Row="1" Content="Browser cookies" GroupName="loginmethod" IsChecked="{Binding IsBrowserCookiesChecked}"/>
<RadioButton Margin="5" Grid.Row="2" Content="Username + password" GroupName="loginmethod" IsChecked="{Binding IsUsernamePasswordChecked}"/>
我已将他们包围在我的视图模型两个独立的bool看起来如下:
public const string IsUsernamePasswordCheckedPropertyName = "IsUsernamePasswordChecked";
private bool _isUsernamePasswordChecked = false;
public bool IsUsernamePasswordChecked
{
get
{
return _isUsernamePasswordChecked;
}
set
{
if (_isUsernamePasswordChecked == value)
{
return;
}
RaisePropertyChanging(IsUsernamePasswordCheckedPropertyName);
_isUsernamePasswordChecked = value;
RaisePropertyChanged(IsUsernamePasswordCheckedPropertyName);
}
}
public const string IsBrowserCookiesCheckedPropertyName = "IsBrowserCookiesChecked";
private bool _isBrowserCookiesChecked = true;
public bool IsBrowserCookiesChecked
{
get
{
return _isBrowserCookiesChecked;
}
set
{
if (_isBrowserCookiesChecked == value)
{
return;
}
RaisePropertyChanging(IsBrowserCookiesCheckedPropertyName);
_isBrowserCookiesChecked = value;
RaisePropertyChanged(IsBrowserCookiesCheckedPropertyName);
}
}
嗨RandomEngy,谢谢你的回答。不幸的是,这也不起作用。无论组名如何,setters只被调用一次。我像你说的那样删除了组名,但是WPF设置了它的名字隐含性,因为行为没有改变。然后我设置了两个不同的组名。这导致两个单选按钮在双击之后设置,并且无法再解除。 – MPL
它不只是有不同的组名。您还需要将不同的单选按钮绑定到相同的属性(使用一个反转转换器)。 – RandomEngy