誰かがこれで私を助けてくれることを願っています:
他のいくつかのユーザー コントロール (UserControlA と UserControlB) を使用する WPF ユーザー コントロール (MainControl と呼びます) を作成しました。これら 2 つのユーザー コントロールは、MainControl.xaml.cs クラス (MainControlDependencyProperty1 から 3) で作成された依存関係プロパティにバインドします。これらの DP (多くの場合) は、ViewModel から DP にバインドされます。次のコードはこれを示しています。
<StackPanel>
<doesntmatter:UserControlA
Property1="{Binding Path=MainControlProperty1, RelativeSource={RelativeSource AncestorType={x:Type views:MainControl}, Mode=FindAncestor}, Mode=OneWay}"
Property2="{Binding Path=MainControlProperty2, RelativeSource={RelativeSource AncestorType={x:Type views:MainControl}, Mode=FindAncestor}, Mode=TwoWay}"
/>
<doesntmatter:UserControlB
Property2="{Binding Path=MainControlProperty2, RelativeSource={RelativeSource AncestorType={x:Type views:MainControl}, Mode=FindAncestor}, Mode=TwoWay}"
Property3="{Binding Path=MainControlProperty3, RelativeSource={RelativeSource AncestorType={x:Type views:MainControl}, Mode=FindAncestor}, Mode=TwoWay}"
/>
</StackPanel>
これにより、アプリケーションのさまざまな部分で再利用できる自己完結型のコントロールができました。それを AXML にドラッグし、適切な DP をバインドするだけで問題ありません (データは保存しません)。UserControlsA と B は、他のいくつかの場所でも MainControl とは別に使用されます。すべて正常に動作していますが、パフォーマンスを改善したいので、いくつか質問があります。
1 – UserControlsA と B を MainControl にバインドする適切な方法ですか? ViewModel から完全に独立させたいのです。DP が WPF でデータ バインディングを行うための最適な方法であることは知っていますが、これを可能な限り最善の方法 (かつ最速) で行っているかどうかはわかりません。私は一度それを機能させ、レシピに従いました…</p>
2 – UserControlB をまったく使用したくない状況があります。非表示にしますが、ViewModel の DP が更新されても、コントロール内のバインディングとその他すべてが実行されます。オーバーヘッドを排除できるように、DP またはコントロール全体を無効にする簡単で簡単な方法はありますか? (this.Disable=true; しないでください)。UserControlB DP が存在しないかのように動作するようにしたい…</p>