在 Prism 中处理 PreviewMouseDown 和 PreviewMouseUp 事件
Handling PreviewMouseDown and PreviewMouseUp events in Prism
我有一个 Prism 应用程序,我正在尝试将视图中的 PreviewMouseDown 和 PreviewMouseUp 按钮事件绑定到视图模型中的命令。当我 运行 代码时,我看到以下异常:
作为解决方法,我目前正在绑定到视图中的方法,并使用对视图模型的数据上下文的引用来执行命令。这有效但似乎不正确,因为视图现在了解视图模型。
处理此类问题的正确方法是什么?
您不能将事件绑定到命令,例如按钮的 Command
属性。
幸运的是,您不需要,因为您有 Command
属性。如果命令 returns false
来自 CanExecute
.
,它甚至会禁用按钮
如果您有按钮以外的东西或 MouseDown
以外的东西,您可以使用 InvokeCommandAction
(来自 Prism 或来自 Interactivity)...
xmlns:i="http://schemas.microsoft.com/xaml/behaviors"
<i:Interaction.Triggers>
<i:EventTrigger EventName="MouseDown">
<prism:InvokeCommandAction Command="{Binding MyCommand}"/>
<!-- or -->
<i:InvokeCommandAction Command="{Binding MyCommand}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
我有一个 Prism 应用程序,我正在尝试将视图中的 PreviewMouseDown 和 PreviewMouseUp 按钮事件绑定到视图模型中的命令。当我 运行 代码时,我看到以下异常:
作为解决方法,我目前正在绑定到视图中的方法,并使用对视图模型的数据上下文的引用来执行命令。这有效但似乎不正确,因为视图现在了解视图模型。
处理此类问题的正确方法是什么?
您不能将事件绑定到命令,例如按钮的 Command
属性。
幸运的是,您不需要,因为您有 Command
属性。如果命令 returns false
来自 CanExecute
.
如果您有按钮以外的东西或 MouseDown
以外的东西,您可以使用 InvokeCommandAction
(来自 Prism 或来自 Interactivity)...
xmlns:i="http://schemas.microsoft.com/xaml/behaviors"
<i:Interaction.Triggers>
<i:EventTrigger EventName="MouseDown">
<prism:InvokeCommandAction Command="{Binding MyCommand}"/>
<!-- or -->
<i:InvokeCommandAction Command="{Binding MyCommand}"/>
</i:EventTrigger>
</i:Interaction.Triggers>