2

ユーザー コントロールを mvvm アプリケーションに統合することに行き詰まっています。

ユーザー コントロールはカスタム カレンダーであり、MVVM の原則を使用して書かれたものではありません (MVVM で書き直したくありません)。

ユーザーコントロールで発生するマウスダウンイベントがあります(これは3つの異なるユーザーコントロールの組み合わせです)。

イベント起動コードは次のようになります。

public static readonly RoutedEvent DateEvent = 
    EventManager.RegisterRoutedEvent("dateEvent", RoutingStrategy.Bubble, 
    typeof(RoutedEventHandler), typeof(UserControl2));

public event RoutedEventHandler dateEvent
{
    add{AddHandler(DateEvent, value);}
    remove{ RemoveHandler(DateEvent, value);}
}

private void UserControl_MouseUp(object sender, MouseButtonEventArgs e)
{
    RaiseEvent(new RoutedEventArgs(UserControl2.DateEvent, this));
}

メイン アプリのビューモデルでこのルーティング イベントをサブスクライブするにはどうすればよいですか? 私はそれがMVVMではないことを知っていますが、私が言ったように、ユーザーコントロールを書き直すことはできません。

このイベントは、処理済みとしてマークされるまでツリーをバブルアップすることを知っています。イベントを処理するために public void メソッドを追加することを知っています。そもそもイベントのインターセプトを実装する方法がわかりません。

4

1 に答える 1

1

I think you should read the RelayCommand section of this.

WPF MVVM Apps

于 2012-08-09T18:57:37.710 に答える