利用MvvmLight中的Messenger实现点击一个Button按钮跳出一个子窗口的功能
时间: 2024-03-05 13:48:48 浏览: 70
首先,你需要在你的ViewModel中定义一个命令,用于处理Button的点击事件,例如:
```csharp
public RelayCommand OpenWindowCommand { get; private set; }
public MainViewModel()
{
OpenWindowCommand = new RelayCommand(OpenWindow);
}
private void OpenWindow()
{
// 在这里发送消息,通知View打开子窗口
Messenger.Default.Send(new OpenWindowMessage());
}
```
接下来,在你的View中,你需要在构造函数中注册对应的消息处理函数,并在该函数中打开子窗口,例如:
```csharp
public MainWindow()
{
InitializeComponent();
// 注册OpenWindowMessage消息的处理函数
Messenger.Default.Register<OpenWindowMessage>(this, OpenWindow);
}
private void OpenWindow(OpenWindowMessage message)
{
// 打开子窗口
var childWindow = new ChildWindow();
childWindow.Show();
}
```
最后,你需要定义一个OpenWindowMessage类,用于作为Messenger传递的消息类型:
```csharp
public class OpenWindowMessage
{
// 这里可以添加一些额外的信息
}
```
这样,当你点击Button时,ViewModel中的OpenWindowCommand会被执行,发送一个OpenWindowMessage消息,View中的OpenWindow函数会被调用,打开子窗口。
阅读全文