在 MainWindow 和 UserControl 之间共享状态

Share State Between MainWindow and UserControl

我有一个 WPF 应用程序,想在我的 MainWindow 和一个或多个 UserConrols 之间共享数据,但为简单起见,假设我只有一个 MainWindow.xaml 和一个 UserControl.xaml。从我目前收集到的信息来看,这可以通过绑定和属性来完成。所以我尝试了这个但没有成功。

我想在控件之间共享的对象如下所示:

SharedObject {
 prop string Name;
 prop List<Product> Products;
}

Product {
 prop string ItemName;
 prop double Price;
 prop bool Available;
}

所以我在 MainWindow 中加载 SharedData 并希望能够在 UserControl 中编辑它,但在 TwoWay 模式下,以便也在 MainWindow 中获取修改后的产品列表更新。我还想访问和修改 UserControl 中 SharedObject 的名称 属性。

我怎样才能做到这一点? Property/Binding 是正确的选择吗?这种状态管理也可以用更优雅的方式来完成吗? (在点网核心 3.1 中)

您应该将 window 的 DataContext 设置为您的视图模型 (SharedObject) 的实例,然后让 UserControl 继承 DataContext 来自其父 window(默认情况下这样做)。

然后您可以从 UserControl.

中的元素直接绑定到视图模型的任何 public 属性