2012-08-09 17 views
2

我被困在將用戶控件集成到mvvm應用程序中。MVVM應用程序中來自用戶控件的路由事件

用戶控件是一個自定義日曆,並沒有使用MVVM原理(我不想在MVVM中重新編寫它)。

我有一個在用戶控件(這是三個不同的用戶控件的組合)觸發的鼠標按下事件。

事件發射代碼如下所示:

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)); 
} 

如何訂閱此路由事件在我的主要應用程序的ViewModel?我知道這不是MVVM,但正如我所說,我不能重寫我的用戶控件。

我知道這個事件會冒泡樹,直到它被標記爲已處理。我知道要添加一個公共無效的方法來處理事件 - 我只是不確定如何首先實現對事件的攔截。

回答

1

我想你應該閱讀這個的RelayCommand部分。

WPF MVVM Apps

+0

要清楚,我不建議你重新寫你的控制,但用命令通過綁定您的活動。 – jtimperley 2012-08-09 19:00:39

+0

好的,謝謝,這聽起來像我需要調查。我現在已經解決了這個問題(以一種非MVVM的方式),所以現在我會做 - 我真的應該重新做MVVM風格的用戶控制!我提出的解決方案會導致view和viewModel之間存在大量的依賴關係 – Luthervd 2012-08-09 21:28:48

相關問題