Checkbox twoway模式不更新viewmodel

时间:2011-06-05 15:48:07

标签: silverlight silverlight-4.0 mvvm

这里非常简单的问题。我有一些复选框,其IsChecked绑定设置为我的viewmodel中的属性。绑定模式是twoway。但是,检查它们时,viewmodel属性未更新。我找到一篇关于设置复选框的clickmode的帖子,我尝试了所有选项:Hover,Press和Release。这些都没有解决问题。         

2 个答案:

答案 0 :(得分:0)

你的财产是否像CheckBox.IsChecked一样可以被视为可以自杀的

否则验证MVVM模式工作所需的全部内容:您的属性是公共的,具有getter和setter,实现INotifyPropertyChanged等。

其他属性是否正确绑定?您的DataContext可能有误......

答案 1 :(得分:0)

试试这个:

<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>

创建ViewModel:

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