以前はデータ バインディングが FrameworkElements または FrameworkContentElements でのみ機能していましたが、SL4 では DependencyObjects から派生したオブジェクトのプロパティをデータ バインドする機能が導入されていることを読みました。
ただし、DependencyObjects のプロパティをバインドするときにバインディング ソースがどのように決定されるかについては明確ではありません。
FrameworkElements の場合、要素の DataContext プロパティはソース オブジェクトです (DataContext が直接設定されていない場合は、「ツリーを上って」DataContext を見つけます)。
DependencyObjects の場合、使用される DataContext は、XAML ファイル内の「含まれる」FrameworkElement の DataContext であると推測できます。しかし、この包含オブジェクトを決定するメカニズムは何ですか?
私の特定のケースでは、FrameworkElement のプロパティである ObservableCollection に存在する DependencyObject のプロパティをバインドしようとしています。残念ながら、データバインディング システムが DependencyObject 自体を独自の DataContext として使用しているように見えるため、DependencyObject でプロパティをバインドしようとすると失敗します。バインディング式で指定された名前のプロパティが型にないことを (出力ウィンドウで) 訴えます。同じバインド式を使用して、同じ UserControl 内の FrameworkElement の依存関係プロパティをバインドすると、成功します。