我在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))
}
}
}
他们之间有什么区别?我该怎么用?
答案 0 :(得分:2)
您可以绑定DependencyProperty
一些可以实现INotifyPropertyChanged
的值。例如,如果你写:
<TextBox Content="{Binding FirstName}" />
然后Content是一个依赖属性,它将对绑定源的变化作出反应。
主要区别在于,普通.NET属性的值是 直接从类中的私有成员读取,而值 调用时动态解析DependencyProperty的值 从DependencyObject继承的GetValue()方法。
当您设置依赖项属性的值时,它不会存储在 您的对象的字段,但在提供的键和值的字典中 由基类DependencyObject。条目的关键是名称 属性和值是您要设置的值。
您应该在ViewModel中使用简单属性,这些属性将绑定到WPF对象中的依赖项属性(Content
,Background
,IsChecked
以及许多其他包含DP的您将在您的自定义用户控件中定义。)