我想将字符串值绑定到文本框,但仅在选中复选框时才会绑定。因此,如果选中该复选框,我希望文本框显示消息1,如果没有,则显示消息2.
最好的方法是什么?是否更好在我的对象中使用List属性,然后取决于是否选中复选框取决于我的列表中的哪个项目<>显示
或
最好在选中复选框后更新对象的属性(这次是字符串类型),然后重新绑定?
答案 0 :(得分:15)
这是一种MVVM类型的方法,假设您了解INotifyPropertyChanged(您需要!)。玩它并随时询问你遇到的任何事情。
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}" />