2016-12-14 2 views
0

У меня есть 2 UWP RadioButtons, связанные с булевым в ViewModel. Когда я инициализирую OptionOn в true в ViewModel, кнопка отображается как непроверенная, а опция OptionOff. Мой код заимствован из Джерри Никсон Data binding to a Radio Button in XAMLИнициализировать группу кнопок радиосвязи UWP

Части 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}"/> 

Edit 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); } } 

Я также попытался инициализация OptionOn истины в ViewModel CTOR с тем же неправильным результатом. Как инициализировать OptionOn в true в ViewModel?

ответ

1

_OptionOff не используется вообще, поэтому удалите его.

Я не знаю, какой базовый класс у вашей модели просмотра есть, но я предполагаю, что ваш метод Set имеет атрибут [CallerMemberName] на третьем параметре propertyName. Это приведет к изменению уведомления об изменении свойства только для заданного свойства, но оба свойства будут изменены (поскольку они используют одно и то же значение поддержки). Таким образом, вы должны повысить свойства измененных уведомлений для каждой собственности (как это сделал Джерри в своей статье).

Также ваше имущество OptionOff устанавливает значение false всегда, является ли это желательным?

Кажется, что вы действительно хотите установить флажок вместо двух переключателей.

Вы хотите, чтобы OptionOff имело обратное значение OptionOn? Если это так, вам понадобится имущество:

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

Благодарим вас за консультацию @Decade Moon. Я отредактировал мой вопрос, чтобы показать наследования ViewModel из Template 10 ViewModelBase, который повышает свойства измененных уведомлений. Я также удалил '_OptionOff'. В спецификации необходимо использовать радиокнопки, чтобы установить одно логическое свойство. В этом вопросе используется упрощенный пример кода. В действительности опции (например, StandardPackage/LuxuryPackage) переключают одно логическое значение, когда флажок не предоставляет достаточную информацию пользователю. Привязка работает, выбор кнопки правильно устанавливает свойство. Проблема заключается в инициализации в ViewModel. – Vague

+0

Я добавил немного больше к моему ответу. Оба свойства возвращают одно и то же значение. Здесь есть несколько вопросов. –

Смежные вопросы