2017-03-27 5 views
13

Expression interactionsのCallMethodActionを使用して、MVAMに優しい方法でXAMLのイベントを処理します。Visual Studio 2017 - Expressionインタラクションはどうなりましたか?

私はVS2017で新しいWPFプロジェクトを作成しましたが、今は古いExpression名前空間がなくなっています。私はthis page on MSDNを探していますが、そのアセンブリを参照して、CallMethodActionが含まれていない名前空間を追加した後です。そのページはSilverlight用で、これはWPFなので、アクションはもはや利用できないと心配しています。

実際に削除/交換されたことを知っている人はいますか?どのようにしてビューモデル上でイベントハンドラを呼び出すのでしょうか?

(それが元のイベント引数を中継し、プレビューイベントをキャンセルすることができますので、私はInvokeCommandActionについて知っていますが、私はCallMethodActionを好む。)

編集:だけ前進し、私はInvokeCommandActionを試みたが、それはもはや同じように動作し、私は新しい使用法に関するドキュメントを見つけることができません。

Microsoft.Xaml.Interactions名前空間にはthis reference on MSDNが見つかりましたが、必要なクラスが含まれているように見えますが、そのアセンブリは存在しないようです。

私はここで何かが分かりにくいと感じます。イベントに反応するのと同じくらい基本的なものに急激な変化を起こす方法は見当たりません。

+0

おそらく変化するターゲットフレームワークは助けになるでしょう –

+0

@nmarlerの回答を参照してください - これは正しい答えではなく、ナゲットパッケージに依存しません –

答えて

38

は、Visual Studio 2017のインストーラを使用します「個別コンポーネント」ページの「SDK、ライブラリ、およびフレームワーク」の見出しにある「.NET用Visual Studio SDK用ブレンド」をインストールします。

+1

これはお勧めの解決策です –

+0

うん、私の答えを変更しました、ありがとう。私はこれに気付かなかった。 – amnesia

6

CallMethodActionは、Microsoft.Expressions.Interactions.dllで定義されています。このアセンブリは、.NET Frameworkの一部ではありませんが、あなたはNuGetを使ってそれをダウンロードすることができます:https://www.nuget.org/packages/MicrosoftExpressionInteractions/

そしてInvokeCommandActionクラスはSystem.Windows.Interactivity.dllアセンブリで定義されています:https://www.nuget.org/packages/System.Windows.Interactivity.WPF/

+0

リンクされたExpressionInteractionsは古い非公式バージョンです。 VS2017エンタープライズ。キーはSystem.Windows.Interactivity.WPFをインストールしていました。これは現在のバージョンのEIをインストールして、使い慣れた名前空間と機能を私に与えました。以前はコアSystem.Windows.Interactivityアセンブリを使用していましたが、これは決してナゲットからインストールする必要はなかったので、これが変更だと思います。ありがとう! – amnesia

+0

受け入れられた回答を遡及的に変更して申し訳ありませんが、以下の@ nmarlerの解決策は実際には正しいものです。 – amnesia

関連する問題