我想把触发器定义为后续在控件中使用的资源。
就像这样:
<Window.Resources>
<DataTrigger x:Key="Trigger1" Binding="{Binding ViewModelProperty1}" Value="Val1">
<Setter Property="IsEnabled" Value="False"/>
</DataTrigger>
<DataTrigger x:Key="Trigger2" Binding="{Binding ViewModelProperty2}" Value="Val2">
<Setter Property="IsEnabled" Value="False"/>
</DataTrigger>
...
</Window.Resources>
然而,当我尝试运行代码时,编译器会抱怨IsEnabled不是一个有效的成员。我认为这是因为它无法知道所讨论的控件是否会有属性“IsEnabled”。与样式一样,我想我需要以某种方式指定TargetType(在我的情况下,应该是FrameworkElement)。但是,如何呢?
注意:
请不要建议将触发器作为资源使用而不是样式。由于控件只能有一个样式,但我需要给一个控件多个触发器,所以这里不适用样式:
实际代码中,我有一个Button,应该有触发器1、2和4,一个TextBox,应该有触发器1和3,还有一个Label应该有触发器2、3和4……我想你懂的。