WPF在两个不同的View之间如何传值
本人是从Winform转向WPF的小白,在Winform中直接使用构造函数或者全局变量就可以最参数进行传参,但是WPF是另一个思维,目前了解到的是通过Message来进行传递。
新建一个类,来存放需要传递的状态,比如设备是否已连接。
1
2
3
4
5
6
7
8
9
10// ConnectionStatusMessage.cs
using GalaSoft.MvvmLight.Messaging;
namespace ViewModels.SideBar
{
public class ConnectionStatusMessage
{
public bool IsConnected { get; set; }
}
}修改 DeviceViewModel,发送消息
在连接成功和断开的地方添加消息发送:
1
2
3
4// 发送断开消息
Messenger.Default.Send(new ConnectionStatusMessage { IsConnected = false });
// 发送连接成功消息
Messenger.Default.Send(new ConnectionStatusMessage { IsConnected = true });修改 StatusBarViewModel,接收消息
1
2
3
4
5
6
7
8
9
10public StatusBarViewModel()
{
// 注册消息接收
Messenger.Default.Register<ConnectionStatusMessage>(this, OnConnectionStatusChanged);
}
private void OnConnectionStatusChanged(ConnectionStatusMessage message)
{
IsConnected = message.IsConnected;
}
原理说明:
1 | DeviceViewModel StatusBarViewModel |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Freeda博客!
评论