WPF单选按钮值和标签文本

时间:2015-09-24 19:26:45

标签: mvvm radio-button label

我正在尝试将标签文字与单选按钮值相关联,例如如果检查了无线电,则标签文本为“x”。如果没有,那就是“y”。 在我的XML中:

<RadioButton x:Name="radio1" Content="Option1" GroupName="Group1" IsChecked="{Binding BoolValue, Converter={StaticResource BooleanConverter}, ConverterParameter='true', Mode=TwoWay}" />
<RadioButton Content="Option2" GroupName="Group2" IsChecked="{Binding BoolValue, Converter={StaticResource BooleanConverter}, ConverterParameter='false', Mode=TwoWay}"/>
...
...
<Label Content="{Binding LabelText, UpdateSourceTrigger=PropertyChanged}" Width="70"/>

代码: (_shape绑定到单选按钮IsChecked;)

private bool _boolValue;
public bool BoolValue
{
    get { return _boolValue; }
    set
    {
        _boolValue= value;
        PackLengthLabel = (_boolValue == true)? "x" : "y";
        OnPropertyChanged("BoolValue");
    }
}

标签文字属性:

private string _labelText;
public string LabelText
{
    get { return _labelText; }
    set
    {
        _labelText = value;
        OnPropertyChanged("LabelText");
    }
}

问题是更改不会影响标签文本 - 无论选中哪个复选框,它都会始终相同。布尔值和文本值正在变化(在setter中检查)。我还检查过标签是否试图从getter获取_labelText,但事实并非如此。我也尝试了不同的绑定模式,但文本都是一样的。 它影响其他控件的唯一方法是直接绑定到其他属性,例如:

IsEnabled="{Binding IsChecked, ElementName=radio1}" 

EDIT1:

我可以通过两种方式开展工作:

  1. 在后面的View代码中设置标签内容值,参考元素属性

  2. 使用此处的代码:https://stackoverflow.com/a/23642108/3974198

  3. 但我仍然很好奇,为什么简单的标签文本值的getter和setter没有完成这项工作。

1 个答案:

答案 0 :(得分:0)

最后我明白了。我在View和ViewModel中有属性setter和getter。问题是View继承自INotifyPropertyChanged,但ViewModel在ViewModel中没有那么多我可以使用OnPropertyChanged,而不会出现任何错误。