4

この単純な XAML レイアウトを使用して、DataContext をそれ自体に設定したウィンドウがあります。

<StackPanel>
   <TextBlock Text="{Binding NameCLR}"/>
   <TextBlock Text="{Binding NameDP}"/>
</StackPanel>

コードビハインドには、2つのプロパティNameCLR - CLR propertyNameDP - 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 プロパティにはアクセスできますが、Private CLR プロパティにはアクセスできません。

私は出力を得ました -

DPProperty

それ以外の

CLRProperty
DPProperty

DP と CLR プロパティでのこの異なる動作について誰かに教えてもらえますか?

4

1 に答える 1