ウィンドウ内に矩形を描くことができるMVVM WPFアプリケーションを作成しようとしています。今、私は画面全体をカバーするキャンバス要素を作成しました。他の質問やガイドに続いて、マウスイベントでコマンドバインディングを使用する唯一の方法(たとえばMouseDown
,MouseUp
など)は、System.Windows.Interactivityアセンブリを使用し、マウスイベントに対してEventTriggersを追加することです。しかし、これはcanvas要素では機能していないようです。クリック、クリック/ホールド、クリック/ドラッグ、右クリック、いずれも私のコマンドのExecuteメソッドを起動しません。WPF Interaction.Triggers MouseDown Canvas要素で動作しないEventTrigger
キャンバス要素でサポートされるイベントは何ですか? MouseDown
またはPreviewMouseDown
が動作しないのはなぜですか?
- クリックして - 私は内部
Button
要素に適用した場合に動作します:ウィンドウの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
要素で動作します キャンバスの背景が設定されていないので、210
- のMouseLeftButtonDown
- PreviewLeftMouseButtonDown
うん、それは動作します!どういうわけか、私はウィンドウに背景を設定してから、それが適用されたとは思わなかった。 –
これはやや直感的な操作のようです。良い答え –