0
我有以下情況下,我希望能找到一個解決方案,我有一個自定義Window
類,我創建了一個事件如下(我已經刪除了一些代碼簡潔)mvvm綁定自定義事件與自定義窗口與viewmodel
public class AeroWindow : Window
{
public delegate void SystemMenuEventHandler(object sender);
public event SystemMenuEventHandler Exit;
...
public override void OnApplyTemplate()
{
...
var exitButton = this.GetTemplateChild("SM_ExitButton") as Button;
if (exitButton != null)
{
exitButton.Click += (sender, args) => { this.OnExit(); };
}
}
protected virtual void OnExit()
{
if (this.Exit != null)
{
this.Exit(this);
}
}
}
我使用MVVM與Calibutn.Micro和我有一個ShellViewModel和ShellView(該ShellView從AeroWindow繼承)
我想知道的是以下幾點:
- 我應該如何正確地創建自定義事件,是否正確?
- 我如何然後結合所述「事件」在視圖模型
- 能事件的方法相同的方法被用於氣泡從一個視圖模型的事件到另一個(例如我有最初加載一個LoginViewMode的ShellViewModel (UserControl),然後加載一個MainViewModel(UserControl),如果我在窗口上有一個名爲
Exit
的事件,那麼ShellViewModel可以訂閱該消息並將其展開到加載的視圖或應該加載的視圖訂閱窗口事件)
我知道這是一些問題,但它們都與同一件事有關,我希望有人能提供答案。
爲什麼要將退出事件綁定到viewmodel?視圖模型是否需要知道您正在退出應用程序? – Lance
退出只是一個例子,顯然AeroWindow會處理退出,將會有其他事件我想要創建和綁定 –