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会处理退出,将会有其他事件我想要创建和绑定 –