【问题标题】:Checkbox twoway mode not updating viewmodel复选框双向模式不更新视图模型
【发布时间】:2011-09-08 19:04:40
【问题描述】:
这里的问题很简单。我有一些复选框,它们的 IsChecked 绑定设置为我的视图模型中的属性。绑定模式是双向的。但是,当它们被选中时,viewmodel 属性不会更新。我找到了一篇关于设置复选框点击模式的帖子,并且我尝试了所有选项:悬停、按下和释放。这些都不能解决问题。
【问题讨论】:
标签:
silverlight
silverlight-4.0
mvvm
【解决方案1】:
您的属性是像 CheckBox.IsChecked 这样的可为空的布尔值吗?
否则,验证 MVVM 模式工作所需的所有内容:您的属性是公开的,具有 getter 和 setter,实现 INotifyPropertyChanged 等。
其他属性是否正确绑定?您的DataContext 可能是错误的...
【解决方案2】:
试试这个:
<Window x:Class="WpfTestApp.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525" >
<StackPanel>
<CheckBox Width="250" Height="30" IsChecked="{Binding Path=IsTrue, Mode=TwoWay}" />
<TextBlock Text="{Binding Path=IsTrue}" />
</StackPanel>
</Window>
创建视图模型:
public class MainWindowViewModel :INotifyPropertyChanged
{
private bool _isTrue;
public event PropertyChangedEventHandler PropertyChanged;
protected void OnPropertyChange(string propertyName)
{
if(PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
public bool IsTrue
{
get { return _isTrue; }
set
{
_isTrue = value;
OnPropertyChange("IsTrue");
}
}
}
在 MainWindow.cs 代码中绑定到视图模型
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
DataContext = new MainWindowViewModel();
}
}