WPF の暗黙的なスタイルを使用してこれを行うことをお勧めします。スタイルには、ビュー モデルへのバインディングが含まれます。次に例を示します。
<Style TargetType="{x:Type Button}">
<Setter Property="IsEnabled" Value="{Binding IsNotProcessing}" />
</Style>
このスタイルにはx:Key
属性が設定されておらず、属性のx:Type
マークアップ拡張機能が使用TargetType
されているため、この場合、すべてのボタンに暗黙的に適用されます。
次のスタイルは、すべてのボタン、テキスト ボックス、および使用するすべてのコントロールに適用されるわけではないため、ビュー内の個別のコントロールごとに暗黙的なスタイルを記述する必要があります (ただし、IsEnabled
プロパティは で定義されていますFrameworkElement
)。
<!-- This implicit style is not applied as the x:Type must be the same type as
the targeted control; inheritance does not work here. -->
<Style TargetType="{x:Type FrameworkElement}">
<Setter Property="IsEnabled" Value="{Binding IsNotProcessing}" />
</Style>
もう 1 つのオプションは、リソース キーを持つ単一のスタイルを作成し、すべてのコントロールからこれを参照することです。これも非常に面倒ですが、設計時にすべてのコントロールを知っていれば、Blend を使用して比較的簡単に実行できます (すべてのコントロールを選択します)。コントロールを選択し、プロパティ ウィンドウを使用してスタイルを適用します)。
これがあなたを助けることを願っています。