gpt4 book ai didi

c# - WPF 复合窗口和 ViewModel

转载 作者:太空狗 更新时间:2023-10-29 23:26:11 24 4
gpt4 key购买 nike

我有一个 WPF Window,其中包含几个 UserControls,这些控件包含另一个。现在,最主要的方法是如何为此窗口创建 ViewModel 以及将其绑定(bind)到哪里。

我确实希望首先需要为每个子控件创建 ViewModel

最佳答案

有几种方法可以做到这一点。

注入(inject)虚拟机

我会推荐这种方法。

如果您的窗口是在 App 类中创建的,例如

var window = new MyWindow();
window.Show();

我会在显示窗口之前分配虚拟机:

var window = new MyWindow();
window.DataContext = GetDataContextForWindow();
window.Show();

如果您的某个控件需要自己的 View 模型,请在创建控件实例时分配 VM。

数据绑定(bind)

如果要设置控件的 VM,可以将 DataContext 属性绑定(bind)到周围 VM 提供的 VM 实例。

<Controls:MyControl DataContext={Binding MyControlsVm} />

代码隐藏

您可以使用代码隐藏中的 init 方法设置 VM,例如

public MyWindow()
{
InitializeComponent();
DataContext = CreateViewModel;
}

如果你不想为你的主页创建一个虚拟机,你可以使用一个技巧:

public MyWindow()
{
InitializeComponent();
DataContext = this;
}

并且只使用类背后的代码作为 VM。

关于c# - WPF 复合窗口和 ViewModel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6191965/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com