初始化 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
,这是需要的吗?
看来你真的想要一个复选框而不是两个单选按钮。
您是否总是希望 OptionOff
与 OptionOn
具有相反的值?如果是这样,您需要 属性 为:
public bool OptionOff { get { return !_OptionOn; } set { Set(ref _OptionOn, !value); } }
我有 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
,这是需要的吗?
看来你真的想要一个复选框而不是两个单选按钮。
您是否总是希望 OptionOff
与 OptionOn
具有相反的值?如果是这样,您需要 属性 为:
public bool OptionOff { get { return !_OptionOn; } set { Set(ref _OptionOn, !value); } }