toolkit,mvvm8.0 如何使用PropertyChangedMessage在两个ViewModel传值
时间: 2024-03-12 19:50:30 浏览: 114
视图之间传值的方法
在 MVVM 中,要在两个 ViewModel 之间传递数据,可以使用消息机制。PropertyChangedMessage 是其中一种消息类型,用于传递属性值的变化。
假设你有两个 ViewModel,分别是 ViewModelA 和 ViewModelB,需要在它们之间传递值。可以按照以下步骤操作:
1. 在 ViewModelA 中定义一个属性,用于存储要传递的值。在属性的 set 方法中,使用 RaisePropertyChanged 方法触发 PropertyChanged 事件。
```csharp
private string _value;
public string Value
{
get { return _value; }
set
{
_value = value;
RaisePropertyChanged(nameof(Value));
}
}
```
2. 在 ViewModelA 中创建一个方法,用于发送消息。在方法中,创建一个 PropertyChangedMessage 对象,将要传递的值设置为消息的 Content 属性,然后使用 Messenger.Default.Send 方法发送消息。
```csharp
public void SendMessage()
{
var message = new PropertyChangedMessage<string>(this, Value, nameof(Value));
Messenger.Default.Send(message);
}
```
3. 在 ViewModelB 中订阅消息。可以在 ViewModelB 的构造函数中使用 Messenger.Default.Register 方法注册订阅,指定要订阅的消息类型和处理消息的方法。
```csharp
public ViewModelB()
{
Messenger.Default.Register<PropertyChangedMessage<string>>(this, HandleMessage);
}
private void HandleMessage(PropertyChangedMessage<string> message)
{
Value = message.NewValue;
}
```
在 HandleMessage 方法中,将收到的消息中的 NewValue 属性赋值给 ViewModelB 中相应的属性,即可完成传值。需要注意的是,PropertyChangedMessage 的泛型类型应该与要传递的属性的类型相同。
阅读全文