◆ Binding 型のプロパティなら Binding の設定じゃなくて Binding のインスタンスを代入してるみたい

DependencyProperty でないプロパティに Binding しようとすると
型 ○○ の ×× プロパティで 'Binding' を設定することはできません。'Binding' は、DependencyObject の DependencyProperty でのみ設定できます。

と言われます

Framework にある普段から Binding をよく使う Content とか Background とか ItemsSource などのプロパティも DependencyProperty です
それらのプロパティをもつクラス Label や ItemsControl などは DependencyObject です
なので Binding が使えています

ですが 例外で GridViewColumn の DisplayMemberBinding プロパティや DataTrigger の Binding プロパティなどは DependencyProperty ではありません
これらの特徴は 型が Binding (BindingBase) ということです


自分でこういうクラスを作って
public class Class 3
{
    public string binding1 { get; set; }
    public Binding binding2 { get; set; }
    public int binding3 { get; set; }
}

XAML にこう書くと
<local:Class3 x:Key="type-string" binding1="{Binding xxx}"/>
<local:Class3 x:Key="type-binding" binding2="{Binding xxx}"/>
<local:Class3 x:Key="type-int" binding3="{Binding xxx}"/>

wpfsmp16122801

のように Binding のときはエラーになりません

たぶん Binding 型のときは Binding マークアップ書いても Binding を設定するのじゃなくて プロパティに Binding を代入するという動きになるのだと思います


なぜ気づいたか というと 上で書いたようなプロパティの BindingExpression が欲しかったのですが取得しようとしたら DependencyProperty がないので取れない! と思って気づきました

BindingExpression がとれないと DataTrigger とかで手動で Binding 更新したいときなどどうするんだろう?