mvvmlight viewmodel之间传参
时间: 2023-11-10 15:06:32 浏览: 78
在MVVMLight中,可以通过Messenger实现ViewModel之间的传参。下面是一个简单的示例:
首先,定义一个消息类:
```csharp
public class MyMessage
{
public string Data { get; set; }
}
```
然后在发送方ViewModel中发送消息:
```csharp
var message = new MyMessage { Data = "hello" };
Messenger.Default.Send(message);
```
在接收方ViewModel中,订阅该消息:
```csharp
Messenger.Default.Register<MyMessage>(this, message =>
{
// 处理接收到的消息
var data = message.Data;
});
```
需要注意的是,在接收方ViewModel中,一定要在不需要订阅该消息时取消订阅,否则可能会出现内存泄漏。可以在ViewModel的构造函数中订阅消息,在ViewModel的析构函数中取消订阅,如下所示:
```csharp
public MyViewModel()
{
Messenger.Default.Register<MyMessage>(this, OnMyMessageReceived);
}
~MyViewModel()
{
Messenger.Default.Unregister<MyMessage>(this);
}
private void OnMyMessageReceived(MyMessage message)
{
// 处理接收到的消息
var data = message.Data;
}
```
阅读全文