初始化 UWP 单选按钮组

Initialize UWP Radio Button Group

我有 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?

_OptionOff 根本没有被使用,所以删除它。

我不知道你的视图模型有什么基础 class,但我假设你的 Set 方法在第三个 propertyName 上有一个 [CallerMemberName] 属性范围。这将仅针对正在设置的特定 属性 引发 属性 更改通知,但两个属性都会更改(因为它们共享相同的支持值)。因此,您必须为每个 属性 引发 属性 更改通知(正如 Jerry 在他的文章中所做的那样)。

您的 OptionOff 属性 也总是将值设置为 false,这是需要的吗?

看来你真的想要一个复选框而不是两个单选按钮。

您是否总是希望 OptionOffOptionOn 具有相反的值?如果是这样,您需要 属性 为:

public bool OptionOff { get { return !_OptionOn; } set { Set(ref _OptionOn, !value); } }