【问题标题】:Checkbox twoway mode not updating viewmodel复选框双向模式不更新视图模型
【发布时间】:2011-09-08 19:04:40
【问题描述】:

这里的问题很简单。我有一些复选框,它们的 IsChecked 绑定设置为我的视图模型中的属性。绑定模式是双向的。但是,当它们被选中时,viewmodel 属性不会更新。我找到了一篇关于设置复选框点击模式的帖子,并且我尝试了所有选项:悬停、按下和释放。这些都不能解决问题。

【问题讨论】:

  • 您的 Xaml 样本会有所帮助。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-01-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-26
      • 1970-01-01
      相关资源
      最近更新 更多