3

私はこの概念を理解しようとしていますが、私を逃れています。

この背後にある一般的な概念は何ですか? 私はそれが可能であることを知っていますが、私の研究/独自のテストプロジェクトに基づいてこれを行う方法を完全にフォローしているわけではありません.

ビューでコードビハインドを絶対に避けたいです。「PreviewMouseDown」などのイベントをビューから切り離し、ViewModel でコマンドをトリガーするようにしたいと考えています。

これを達成する方法について、誰かが私にいくつかの基本的なガイダンスを教えてもらえますか?

概要:

表示 (PreviewMouseDown) -> ViewModel でコマンドを呼び出す (MyPreviewMouseDownCommand)

ありがとうございました

4

3 に答える 3

15

反対票を投じられるリスクがありますが、これが世界で最悪のことだとは思いません

public void PreviewMouseDown(Object sender, RoutedEventArgs e)
{
    var viewModel= (MyViewModel)DataContext;
    if (viewModel.MyCommand.CanExecute(null))
        viewModel.MyCommand.Execute(null);
}
于 2012-09-04T19:36:24.793 に答える
4

これは通常、何らかの形式のAttached Propertyまたは(Blend) Behaviorを介して処理されます。

たとえば、MVVM Light にはEventToCommand BehaviorICommandが含まれており、コード ビハインドを追加せずに、任意のイベントを XAML でルーティングできます。

于 2012-09-04T19:33:38.717 に答える
3

CommandingBindingがすべてです。ただし、配管を提供するフレームワークをより適切に使用することをお勧めします。最初の戦略を表示したい場合は、Reedが提案したように MVVM Light を使用できます。ただし、ViewModel の最初のアプローチが必要な場合 (個人的には理解しやすいと思います)、Caliburn Microを使用することをお勧めします。

とにかく、コード ビハインドをきれいにしたい場合は、Event to Command または Interactivity Library (Blend SDK から) を使用することになります。

于 2012-09-04T19:37:15.600 に答える