如何使用WPF在不同区域显示不同视图
How to Display Different views in Different Regions using WPF
在我的 WPF window 中,我想在不同的位置同时显示不同的视图。请注意,这些视图没有以任何方式直接链接,因此它们将执行不同的操作。
在当前使用的 MVVM 模式下,我一次只能绑定到 MainWindow.xaml
中的特定视图
如果有人可以将我推向正确的方向,我将不胜感激。谢谢
该方法应该适用于共享视图模型和分离视图模型。
您的视图应作为单独的控件实现并绑定到适当数据源的实例。为此,您可以创建一个用户控件,然后将控件的 DataContext
设置为预期视图模型类型的新实例。
在您的主要 window 中,使用最合理的方式构建您的区域布局,我假设一个包含行和列的网格。
接下来添加每个视图的实例,并在面板中的必要位置找到它们。默认情况下,视图将具有您在构建它们时提供的数据源,因此它们都已经具有视图模型实例。
如果您想共享单个视图模型,则在主 window 中创建一个实例作为资源,并将每个视图上的 DataContext
设置为该资源。
如果单独的视图模型,要么采用视图创建的默认模型,要么创建新实例作为资源并绑定它们 - 再次在主 window.
除了 Kidshaw 答案之外,您不限于将所有模型和视图都放在同一个 window 中。
您可以轻松地打开新的 windows 以及与之兼容的不同模型。
这是我过去用来帮助您入门的文章:MVVMLight Using Two Views。
您还可以查看此 question 以了解有关使用多个 windows 的更多详细信息。
在我的 WPF window 中,我想在不同的位置同时显示不同的视图。请注意,这些视图没有以任何方式直接链接,因此它们将执行不同的操作。
在当前使用的 MVVM 模式下,我一次只能绑定到 MainWindow.xaml
中的特定视图如果有人可以将我推向正确的方向,我将不胜感激。谢谢
该方法应该适用于共享视图模型和分离视图模型。
您的视图应作为单独的控件实现并绑定到适当数据源的实例。为此,您可以创建一个用户控件,然后将控件的 DataContext
设置为预期视图模型类型的新实例。
在您的主要 window 中,使用最合理的方式构建您的区域布局,我假设一个包含行和列的网格。
接下来添加每个视图的实例,并在面板中的必要位置找到它们。默认情况下,视图将具有您在构建它们时提供的数据源,因此它们都已经具有视图模型实例。
如果您想共享单个视图模型,则在主 window 中创建一个实例作为资源,并将每个视图上的 DataContext
设置为该资源。
如果单独的视图模型,要么采用视图创建的默认模型,要么创建新实例作为资源并绑定它们 - 再次在主 window.
除了 Kidshaw 答案之外,您不限于将所有模型和视图都放在同一个 window 中。 您可以轻松地打开新的 windows 以及与之兼容的不同模型。
这是我过去用来帮助您入门的文章:MVVMLight Using Two Views。
您还可以查看此 question 以了解有关使用多个 windows 的更多详细信息。