WPF中依赖项属性之间的差异

时间:2016-03-20 20:00:39

标签: c# wpf dependency-properties

我在WPF中有两个依赖项属性的实现。 首先,我在互联网上找到了:

cd ~\cashe\

第二,来自 propdp 片段:

public class TestClass : INotifyPropertyChanged
{
    public event PropertyChangedEventHandler PropertyChanged;

    public void OnPropertyChanged(string propertyName)
    {
        PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
    }
    private string _test;

    public string Test
    {
       get
       {
           return _test;
       }
       set
       {
           _test = value;
           OnPropertyChanged(nameof(Test))
       }
    }
}

他们之间有什么区别?我该怎么用?

1 个答案:

答案 0 :(得分:2)

您可以绑定DependencyProperty一些可以实现INotifyPropertyChanged的值。例如,如果你写:

<TextBox Content="{Binding FirstName}" />

然后Content是一个依赖属性,它将对绑定源的变化作出反应。

  

主要区别在于,普通.NET属性的值是   直接从类中的私有成员读取,而值   调用时动态解析DependencyProperty的值   从DependencyObject继承的GetValue()方法。

     

当您设置依赖项属性的值时,它不会存储在   您的对象的字段,但在提供的键和值的字典中   由基类DependencyObject。条目的关键是名称   属性和值是您要设置的值。

via

您应该在ViewModel中使用简单属性,这些属性将绑定到WPF对象中的依赖项属性(ContentBackgroundIsChecked以及许多其他包含DP的您将在您的自定义用户控件中定义。)