View から ViewModel への WPF イベント バインディング? 質問する

View から ViewModel への WPF イベント バインディング? 質問する

ビュー内の WPF イベントを ViewModel にバインドする最適な方法は何ですか?

ビューにドロップ イベントがありますが、バインディングにより ViewModel に置き換えたいです。

いくつかの解決策を見つけましたが、どれも期待どおりには機能しませんでした。

コードを表示:

    <TextBox 
    AllowDrop="True" 
    PreviewDrop="email_Drop" />

ベストアンサー1

MVVM および XAML でイベントを処理する 1 つの方法は、Blend Interactivity 機能を使用することです。この名前空間には、InvokeCommandAction クラスと CallMethodAction クラスが含まれています。

InvokeCommandAction を使用すると、任意のイベントをビュー モデル コマンドにバインドできます。一方、CallMethodAction を使用すると、任意のイベントをビュー モデル メソッドにバインドできます。

たとえば、Button の DoubleClick イベントをビュー モデル コマンドにバインドする場合は、次のようにします。

<Button>
    <i:Interaction.Triggers>
        <i:EventTrigger EventName="MouseDoubleClick">
            <i:InvokeCommandAction Command="{Binding Path=DoSomethingCommand}"/>
        </i:EventTrigger>
    </i:Interaction.Triggers>
</Button>

この名前空間を宣言します:

xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"

プロジェクトでこれを参照するために必要なのは、Expression Blend または Expression Blend SDK をインストールすることだけです。

おすすめ記事