【问题标题】:WPF DataBinding propertychanged event is not fired未触发 WPF DataBinding propertychanged 事件
【发布时间】:2015-01-29 17:37:00
【问题描述】:

型号:

public class Item
{
    public string ItemNo { get; set; }
    public double Qty { get; set; }
    public string Box { get; set; }
    public string SerialNo { get; set; }
}

视图模型:

 public Item ScanningItem 
    {
        get
        {
            return _scanningItem;
        }
        set
        {
            _scanningItem = value;

            RaisePropertyChanged("ScanningItem");
            if (AddItemCommand !=null)
                AddItemCommand.RaiseCanExecuteChanged();
        }
    }

查看:

问题:更改文本框中的值,Item的PropertyChanged事件-->ScanningItem不会被触发。

在 MVVMLight 中,有一个功能,如果 Model 获得 PropertyChanged,可以通知 ViewModel,有人知道如何使用该功能吗?

【问题讨论】:

  • 您在文本框中绑定了哪个属性?发布您的 xaml。

标签: wpf data-binding


【解决方案1】:

您提到了一个文本框,大概是您绑定到对象的一个​​属性。这不起作用,因为您没有更改对象的实例,只是更改了属性的值。

在这种情况下,您有两个选择,您可以单独公开属性并触发 PropertyChanged 事件。或者,您可以在模型中实现 INotifyPropertyChanged。

视图模型

public string SerialNo
{
    get { return _scanningItem.SerialNo; }
    set
    {
        _scanningItem.SerialNo = value;
        RaisePropertyChanged("SerialNo");
    }
}

【讨论】:

  • 在视图中,我应该绑定到 SerialNo,而不是绑定到 ScanningItem.SerialNo?
  • 不知道你是否熟悉MVVMLight,它有能力将View的PropertyChange从View通知ViewModel,你知道吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-11-27
  • 1970-01-01
  • 1970-01-01
  • 2022-06-10
  • 1970-01-01
  • 2011-02-08
  • 1970-01-01
相关资源
最近更新 更多