Я пытаюсь создать приложение MVVM WPF, которое позволяет мне рисовать прямоугольник в окне. Прямо сейчас я создал элемент холста, который покрывает весь экран. Следуя другим вопросам и руководствам, похоже, что единственный способ использовать привязки команд к событиям мыши (таким как MouseDown
, MouseUp
и т. д.) — это использовать сборку System.Windows.Interactivity и добавить EventTriggers для событий мыши. Однако это, похоже, не работает с элементом холста. Щелчок, щелчок/удержание, щелчок/перетаскивание, щелчок правой кнопкой мыши, ни один из них не запускает метод 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
- МышьСлеваКнопкаВниз
- Предварительный просмотрLeftMouseButtonDown