1
我試圖創建一個MVVM WPF應用程序,允許我在窗口中繪製一個矩形。現在,我創建了一個覆蓋整個屏幕的畫布元素。遵循其他問題和指南,它看起來像在鼠標事件上使用命令綁定的唯一方式(如MouseDown
,MouseUp
等)是使用System.Windows.Interactivity程序集併爲鼠標事件添加EventTriggers。但是,這似乎並不適用於canvas元素。單擊,單擊/按住,單擊/拖動,單擊右鍵,它們都不會觸發我的命令的執行方法。WPF Interaction.Triggers MouseDown EventTrigger不能使用畫布元素
畫布元素支持哪些事件?爲什麼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
元素的作用帆布 - 的MouseDown
- PreviewMouseDown - 工程與
Button
元素 - 的MouseLeftButtonDown
- PreviewLeftMouseButtonDown
是的,那工作!不知何故,我不認爲這是適用的,因爲我在窗口上設置了背景。 –
這似乎是一個相當不直觀的操作。雖然答案很好 –