【发布时间】:2016-07-24 20:44:39
【问题描述】:
我正在尝试创建一个允许我在窗口中绘制矩形的 MVVM WPF 应用程序。现在,我创建了一个覆盖整个屏幕的画布元素。在其他问题和指南之后,似乎对鼠标事件(例如MouseDown、MouseUp 等)使用命令绑定的唯一方法是使用 System.Windows.Interactivity 程序集并为鼠标事件添加 EventTriggers。但是,这似乎不适用于 canvas 元素。单击,单击/按住,单击/拖动,右键单击,它们都不会触发我的命令的 Execute 方法。
画布元素支持哪些事件?为什么MouseDown 或PreviewMouseDown 不起作用?
窗口的 XAML:
<Window x:Class="RutheniumReader.SnippingWindow.SnippingShade"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"
xmlns:snippingWindow="clr-namespace:MyApp.SnippingWindow"
mc:Ignorable="d"
Title="Snipping Window"
WindowState="Maximized"
Background="Black"
>
<Window.DataContext>
<snippingWindow:SnippingWindowViewModel />
</Window.DataContext>
<Canvas x:Name="Canvas">
<i:Interaction.Triggers>
<i:EventTrigger EventName="MouseDown">
<i:InvokeCommandAction Command="{Binding Path=MouseDownCommand}" />
</i:EventTrigger>
</i:Interaction.Triggers>
</Canvas>
</Window>
出于测试目的,我尝试了以下事件,但没有成功:
- 单击 - 如果我将其应用于画布内的
Button元素,则可以使用 - 鼠标按下
- PreviewMouseDown - 使用
Button元素 - MouseLeftButtonDown
- PreviewLeftMouseButtonDown
【问题讨论】:
标签: c# wpf xaml mvvm eventtrigger