在
WPF按钮中,我们有一个Command参数,可以绑定到ICommand.
<Button Command="{Binding SomeCommand}"/>
我们还可以将EventTriggers与InvokeCommandAction一起使用来触发ICommand.
<Button>
<i:Interaction.Triggers>
<i:EventTrigger EventName="Click">
<i:InvokeCommandAction Command="{Binding SomeCommand}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
</Button>
他们和什么时候使用哪个有什么区别?
更新:
我注意到以下情况的不同之处:
>我有一个文本框,如果文本框为空,则使用IValudationRule进行验证.
>我添加了MultiDataTrigger条件,以便在Validation.HasError等于true时将保存按钮的IsEnabled属性设置为false.
使用Button命令一切正常,但使用EventTrigger它不起作用.
有什么理由吗?
最佳答案 如果您不使用CanExecute,则您提供的代码段几乎相同. InvokeCommandAction不是本机WPF类,它是在交互库中创建的,用于控件不提供Command并且您必须将Command绑定到某个事件的情况.例如,当您需要ListBox.SelectionChanged等命令时
所以基于上面,我的建议是,如果可能的话,总是使用Command,并且只有当你不能没有它时才使用EventTrigger.
另请注意,ICommand还提供了基于哪个按钮可以启用/禁用的CanExecute,这在第二种情况下不起作用