我建议使用 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>
另一种选择是制作一个具有资源键的单一样式,然后从每个控件中引用它,这也很麻烦,但是如果您在设计时知道所有控件,则可以使用 Blend 相对容易地完成(您将选择所有控件,然后使用属性窗口应用样式)。
希望这会帮助你。