MVVM - 如果选中复选框,则绑定到复选框

时间:2012-06-16 15:46:15

标签: data-binding mvvm

我想将字符串值绑定到文本框,但仅在选中复选框时才会绑定。因此,如果选中该复选框,我希望文本框显示消息1,如果没有,则显示消息2.

最好的方法是什么?是否更好在我的对象中使用List属性,然后取决于是否选中复选框取决于我的列表中的哪个项目<>显示

最好在选中复选框后更新对象的属性(这次是字符串类型),然后重新绑定?

1 个答案:

答案 0 :(得分:15)

这是一种MVVM类型的方法,假设您了解INotifyPropertyChanged(您需要!)。玩它并随时询问你遇到的任何事情。

VM(viewmodel代码)

public class MyViewModel : INotifyPropertyChanged {

    const string Msg1 = "blah 1";
    const string Msg2 = "blah 2";

    private bool _isSelected;
    public bool IsSelected{
        get { return _isSelected; }
        set {
            if(_isSelected == value) return;

            _isSelected = value;
            MyBoundMessage = _isSelected ? Msg1 : Msg2;

            NotifyPropertyChanged(()=> IsSelected);
            NotifyPropertyChanged(()=> MyBoundMessage);
        }
    }

    public string MyBoundMessage {get;set;}
}

V(查看XAML)

<CheckBox IsChecked="{Binding IsSelected}" />
<TextBox Text="{Binding MyBoundMessage}" />