wpf - Resource 中的 DataTemplate 将 ViewModel 设置为 View,但随后

标签 wpf mvvm binding

我试图找出将 View 的数据上下文设置为 View 模型的许多不同方法。

我此刻正在关注的一个是这样的:

我有我的 MainWindowResource:

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                xmlns:vw="clr-namespace:DemoStuffPartII.View"
                xmlns:vm="clr-namespace:DemoStuffPartII.ViewModel">

<DataTemplate DataType="{x:Type vm:PersonViewModel}">
    <vw:PersonView />
</DataTemplate>

但这也是我立即陷入困境的地方。我知道我应该在 View 中使用 ContentControl。但是配置它的最佳方法是什么?如何解决这个问题?

最佳答案

这就是您可以在 MVVM 应用程序中启用 ViewSwitching 导航的方式。

其他缺失的位是:
在 View 中 ->

<ContentControl Content="{Binding CurrentPage}" />

在 ViewModel -> (伪代码)
Prop ViewModelBase CurrentPage.

但是请注意,如果您只想将 ViewModel 连接到一个 View ,您可以完全删除整个 DataTemplate-ContentControl,然后执行 this.DataContext = new SomeViewModel();在代码隐藏中。

我所知道的将 VM 连接到 View 的最简洁的方法是使用 ViewModelLocator 模式。谷歌 View 模型定位器。

关于wpf - Resource 中的 DataTemplate 将 ViewModel 设置为 View,但随后,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5498989/

相关文章:

wpf - 用于在 MVVM 中进行配置的对话框窗口

c# - 将子类绑定(bind)到属性

c# - 旋转图像源?

c# - 将方法从 View 移动到 View 模型 - WPF MVVM

wpf - 如何使用 IDataErrorInfo 实现条件验证

wpf - 包装在面板MVVM中的用户控件

c# - 当 DataContext 更改时,WPF 绑定(bind) OneWayToSource 将源属性设置为 ""

javascript - 如何在 vue.js 中定位自定义元素( native Web 组件)?

c# - 如何在ListBox Wpf中添加项目之间的间距

c# - 使用 Caliburn Micro 从 View 模型中的属性名称获取控制权