我有一个使用这个简单的 XAML 布局将 DataContext 设置为自身的窗口 -
<StackPanel>
<TextBlock Text="{Binding NameCLR}"/>
<TextBlock Text="{Binding NameDP}"/>
</StackPanel>
在后面的代码中,我有两个属性NameCLR - CLR property
和NameDP - Dependency Property
.
private string NameCLR
{
get { return "CLRProperty"; }
}
private string NameDP
{
get { return (string)GetValue(NameDPProperty); }
set { SetValue(NameDPProperty, value); }
}
private static readonly DependencyProperty NameDPProperty =
DependencyProperty.Register("NameDP", typeof(string), typeof(MainWindow),
new UIPropertyMetadata("DPProperty"));
由于代码隐藏是部分类定义,而部分是 XAML。所以,我假设私有属性应该对 XAML 可见。但令我惊讶的是,CLR 和 DP 的行为不同。
Private Dependency 属性可访问,但私有 CLR 属性不可访问。
我得到的输出为 -
DPProperty
代替
CLRProperty
DPProperty
有人可以让我知道 DP 和 CLR 属性中的这种不同行为吗?