代码之家  ›  专栏  ›  技术社区  ›  0xDEAD BEEF

MVVM简单问题

  •  1
  • 0xDEAD BEEF  · 技术社区  · 14 年前

    问题-用户单击“Dosomething”按钮(视图),视图模型接收命令并将其传递给模型(函数调用)。一些时间过去了,模型处理数据(异步)完成了。model如何通知viewmodel“需要更新”/“完成”? 最好的办法是什么?在这种情况下,如何将模型与ViewModel分开?

    3 回复  |  直到 14 年前
        1
  •  4
  •   Tim Lloyd    14 年前
        2
  •  1
  •   Ian    14 年前

    我认为这样做的正常方法是使用 INotifyPropertyChanged 接口。我不是100%确定它是如何工作的,因为我对WPF还是相当陌生的,但是通常只要属性发生更改,就会触发一个事件,传入属性的名称,并更新该属性的绑定。

    public class TestProperty : INotifyPropertyChanged
    {
            public Boolean IsSelected 
            {
                get { return isSelected; }
                set 
                {
                    isSelected = value; 
                    this.NotifyPropertyChanged("IsSelected");
                }
            }
            private bool isSelected;
    
            /// <summary>
            /// Occurs when a property value changes.
            /// </summary>
            public event PropertyChangedEventHandler PropertyChanged;
    
            /// <summary>
            /// Notifies the property changed.
            /// </summary>
            /// <param name="propertyName">Name of the property.</param>
            private void NotifyPropertyChanged(String propertyName)
            {
                this.VerifyPropertyName(propertyName);
                if (PropertyChanged != null)
                {
                    PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
                }
            }
    }
    
        3
  •  0
  •   jbe    14 年前

    您可能会发现 WPF Application Framework (WAF ) 很有帮助。它们显示了模型如何通过事件与ViewModel或视图通信。