WPF中两个分离视图之间的通信

本文关键字:视图 分离 之间 通信 两个 WPF | 更新日期: 2023-09-27 17:51:21

我有 MainWindows.xaml 包含两个控件元素。第一个接MapView.xaml <Controls:MapView /> ,第二个接InfoView.xaml <Controls:InfoView /> 。现在我想执行方法从InfoView dataContext对象 InfoViewModel MapView DataContext 对象 MapViewModel

我该怎么做?

MapView.xaml.cs

public MapView()
    {
        InitializeComponent();
        _mapViewModel = new MapViewModel();
        this.DataContext = _mapViewModel;
    }

InfoView.xaml.cs

public InfoView()
    {
        InitializeComponent();
        _infoViewModel = new InfoViewModel();
        this.DataContext = _infoViewModel;
    }

WPF中两个分离视图之间的通信

一种方法是使用EventAggregator和您自己的事件从源发送通知并在订阅者中捕获它。

这种方法的一个优点是它是通用的,您可以将任何消息从任何地方发送到任何地方来完成任何事情,您可以从源发送消息并在订阅者中捕获它。

EventAggregator是内置在Prism中的