初始化UWP单选按钮组

时间:2016-12-14 12:51:09

标签: uwp uwp-xaml

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

1 个答案:

答案 0 :(得分:1)

_OptionOff根本没有使用,所以请将其删除。

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

此外,您的OptionOff媒体资源值始终设为false,是否需要?

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

您是否始终希望OptionOffOptionOn具有相反的价值?如果是这样,您将需要该属性:

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