数据绑定窗口手机应用程序的Item ViewModel.cs中的setter和INotifyPropertyChanged方法的说明

时间:2014-02-15 05:43:08

标签: c# visual-studio windows-phone-8

    private string _lineOne;
    /// <summary>
    /// Sample ViewModel property; this property is used in the view to display its value using a Binding.
    /// </summary>
    /// <returns></returns>
    public string LineOne
    {
        get
        {
            return _lineOne;
        }
        set
        {
            if (value != _lineOne)
            {
                _lineOne = value;
                NotifyPropertyChanged("LineOne");
            }
        }
    }

    private string _lineTwo;
    /// <summary>
    /// Sample ViewModel property; this property is used in the view to display its value using a Binding.
    /// </summary>
    /// <returns></returns>
    public string LineTwo
    {
        get
        {
            return _lineTwo;
        }
        set
        {
            if (value != _lineTwo)
            {
                _lineTwo = value;
                NotifyPropertyChanged("LineTwo");
            }
        }
    }

    private string _lineThree;
    /// <summary>
    /// Sample ViewModel property; this property is used in the view to display its value using a Binding.
    /// </summary>
    /// <returns></returns>
    public string LineThree
    {
        get
        {
            return _lineThree;
        }
        set
        {
            if (value != _lineThree)
            {
                _lineThree = value;
                NotifyPropertyChanged("LineThree");
            }
        }
    }

    public event PropertyChangedEventHandler PropertyChanged;
    private void NotifyPropertyChanged(String propertyName)
    {
        PropertyChangedEventHandler handler = PropertyChanged;
        if (null != handler)
        {
            handler(this, new PropertyChangedEventArgs(propertyName));
        }
    }
}

}

这是来自VS windows phone的数据绑定应用程序的典型ItemViewModel.cs页面。

我有两个qs:

首先,所有属性的setter中“if”语句的功能是什么。 其次,请解释NotifyPropertyChanged方法的工作(逐行)以及事件PropertyChanged。

1 个答案:

答案 0 :(得分:0)

  

我有两个qs:首先,“if”语句的功能是什么?   所有房产的设定者。

确保仅在属性值实际更改时才会引发PropertyChanged事件。当它被设置为已经具有更新的值时,它被跳过,因为它不会改变任何东西。

  

其次,请向我解释NotifyPropertyChanged的工作情况   方法(逐行)以及事件PropertyChanged

这是筹集活动的标准方式。检查Events (C# Programming Guide)。它描述了事件以及如何处理它们。快捷方式:null需要检查才能阻止NullReferenceException。要知道为什么使用局部变量,请阅读Eric Lippert的这篇文章:Events and Races