实现:通过创建一个中间类来传递状态
第一步:创建一个消息类:首先,你可以创建一个自定义的消息类,用于传递数据,例如:
- public class CloseWindowMessage
- {
- public bool DialogResult { get; set; }
- }
第二步:在ViewModel B 中发送消息:在ViewModel B 中,当你需要关闭窗口并传递结果时,使用Messenger来发送消息:
- // 在 ViewModel B 中
- var message = new CloseWindowMessage
- {
- DialogResult = true // 或者 false,根据需要设置结果
- };
- Messenger.Default.Send(message);
第三步:在 ViewModel A 中接收消息:在ViewModel A中,你需要订阅消息并处理它,以获取窗口的返回值:
- // 在 ViewModel A 中
- public ViewModelA()
- {
- // 订阅消息
- Messenger.Default.Register
(this, HandleCloseWindowMessage); - }
-
- private void HandleCloseWindowMessage(CloseWindowMessage message)
- {
- // 处理窗口的返回值
- bool dialogResult = message.DialogResult;
- // 在这里可以根据 dialogResult 做相应的处理
- }
-
- // 不要忘记在视图模型销毁时取消注册消息
- public override void Cleanup()
- {
- Messenger.Default.Unregister(this);
- base.Cleanup();
- }