Wpf 使用MVVM方法未按预期触发鼠标事件
我正在尝试使用MVVM方法捕获控件上的鼠标事件。我使用混合事件触发器来调用命令 在下面的示例中,我有一个统一的网格,网格中的每个项目都呈现为矩形。我想记录简单的手势(比如当用户画一条线时),所以我想在鼠标按钮按下、移动到几个项目上然后被提起时执行一个命令 我将事件触发器放置在矩形上,因为我想捕获用于开始或结束所谓手势的viewmodel项 似乎PreviewMouseDown和PreviewMouseUp未作为矩形的一部分激发。但是,如果我将这些事件移动到UniformGrid,它们将正确触发,但我没有用于开始/结束手势的项目 MouseEnter命令按预期启动 关于为什么预览*事件没有触发,或者您可以建议不同的标记吗Wpf 使用MVVM方法未按预期触发鼠标事件,wpf,mvvm,Wpf,Mvvm,我正在尝试使用MVVM方法捕获控件上的鼠标事件。我使用混合事件触发器来调用命令 在下面的示例中,我有一个统一的网格,网格中的每个项目都呈现为矩形。我想记录简单的手势(比如当用户画一条线时),所以我想在鼠标按钮按下、移动到几个项目上然后被提起时执行一个命令 我将事件触发器放置在矩形上,因为我想捕获用于开始或结束所谓手势的viewmodel项 似乎PreviewMouseDown和PreviewMouseUp未作为矩形的一部分激发。但是,如果我将这些事件移动到UniformGrid,它们将正确触发,
<ItemsControl ItemsSource="{Binding Items}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<UniformGrid Rows="{Binding Rows}" Columns="{Binding Columns}" />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<Rectangle Fill="Red">
<i:Interaction.Triggers>
<i:EventTrigger EventName="MouseEnter">
<i:InvokeCommandAction
Command="{Binding Path=DataContext.AddItem, RelativeSource={RelativeSource AncestorType=Window}}"
CommandParameter="{Binding}"
/>
</i:EventTrigger>
<i:EventTrigger EventName="PreviewMouseDown">
<i:InvokeCommandAction
Command="{Binding Path=DataContext.StartGesture, RelativeSource={RelativeSource AncestorType=Window}}"
CommandParameter="{Binding}"
/>
</i:EventTrigger>
<i:EventTrigger EventName="PreviewMouseUp">
<i:InvokeCommandAction
Command="{Binding Path=DataContext.EndGesture, RelativeSource={RelativeSource AncestorType=Window}}"
CommandParameter="{Binding}"
/>
</i:EventTrigger>
</i:Interaction.Triggers>
</Rectangle>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>`
`
我应该投资一家公司。在花时间提问时,我将代码复制粘贴到编辑器中,然后将其清理干净。在这样做的过程中,我实际上编写了正确的标记
几个小时后,晚饭后,我有时间清醒一下头脑。看到没有人回答我的问题,我很沮丧。我回到我的IDE,输出窗口中的绑定错误是不可能错过的!StartTesture/End手势命令缺少命令绑定的RelativeSource部分,因此失败
继续,斯塔克。这里没什么可看的