我有2个UWP RadioButtons绑定到ViewModel上的布尔值。当我在ViewModel中将OptionOn初始化为true时,按钮显示为未选中,并且选中OptionOff。我的代码改编自Jerry Nixon的Data binding to a Radio Button in XAML
XAML:
<RadioButton
GroupName="grpOptions"
Content="Option On"
IsChecked="{x:Bind ViewModel.OptionOn,Mode=TwoWay}"/>
<RadioButton
GroupName="grpOptions"
Content="Option Off"
IsChecked="{x:Bind ViewModel.OptionOff,Mode=TwoWay}"/>
编辑1: ViewModel继承自Template 10 ViewModelBase
public class ViewModel : ViewModelBase
{
bool _OptionOn = true
public bool OptionOn { get { return _OptionOn; } set { Set(ref _OptionOn, value); } }
public bool OptionOff { get { return _OptionOn; } set { Set(ref _OptionOn, false); } }
我还尝试在ViewModel ctor中将OptionOn初始化为true,但结果不正确。如何在ViewModel中将OptionOn初始化为true?
答案 0 :(得分:1)
_OptionOff
根本没有使用,所以请将其删除。
我不知道您的视图模型具有哪个基类,但我假设您的Set
方法在第三个[CallerMemberName]
参数上具有propertyName
属性。这将仅针对所设置的特定属性引发属性更改通知,但两个属性都将更改(因为它们共享相同的支持值)。因此,您必须为每个属性提高属性更改通知(正如Jerry在他的文章中所做的那样)。
此外,您的OptionOff
媒体资源值始终设为false
,是否需要?
看起来你真的想要一个复选框而不是两个单选按钮。
您是否始终希望OptionOff
与OptionOn
具有相反的价值?如果是这样,您将需要该属性:
public bool OptionOff { get { return !_OptionOn; } set { Set(ref _OptionOn, !value); } }