【发布时间】:2016-07-19 18:48:02
【问题描述】:
我有一个按钮和事件触发器。触发器。我想在单击按钮后禁用它。 我收到此错误:
不能将 Type Setter 的值添加到集合或字典中 TriggerActionCollection 类型。
为什么我不能在 EventTrigger 中设置属性?
谢谢
<Button Width="100" Height="50" >
<Button.Style>
<Style TargetType="{x:Type Button}">
<Style.Triggers>
<EventTrigger RoutedEvent="MouseLeftButtonDown">
<EventTrigger.Actions>
<Setter Property="IsEnabled" Value="False"/>
</EventTrigger.Actions>
</EventTrigger>
</Style.Triggers>
</Style>
</Button.Style>
</Button>
【问题讨论】:
-
为什么?只需使用事件
Button_Clicked。您可能不想一直自动禁用该按钮。如果输入配置不正确怎么办?至少在按钮单击事件处理程序中,您可以做出决定。此外,有时您可能希望重新启用该按钮。 -
@IAbstract 不想隐藏任何代码 (MVVM)。
-
祝你好运。似乎是一个非常有限的要求。我假设你不会有 ViewModel 是否正确?你的虚拟机不是在实例化视图吗?您的 VM 可以订阅按钮单击事件并使用模型中可用的任何数据来确定是否禁用按钮。 VM 可以在满足条件时重新启用该按钮。视图本身没有代码。
-
或者,您可以拥有一个绑定在触发器上执行的 Command 对象。
-
@IAbstract 谢谢。我将研究绑定在触发器上执行的 Command 对象。