如何使用MVVM模式在WPF中创建动态表单?

use*_*395 2 c# forms wpf xaml mvvm

我需要在WPF中创建动态表单.例如,假设我需要允许用户创建包含每个人的信息的家谱,并且每个人都将获得有关其职业的信息.

class Person
{
    int age;
    int dateOfBirth;
    List<Job> jobList = new List<Job>();
}

class Job
{
    string title;
    int salary;
}
Run Code Online (Sandbox Code Playgroud)

该程序需要能够具有允许数据输入类中所有成员的字段,包括多个作业.我希望表单数据(可能)在XAML中编码,如果他们单击"添加人员"按钮,它将展开另一个人输入框以允许用户添加有关该人的信息.这与"添加作业"相同,但作业仅添加在该人员下.

(请注意,最终结果将是包含所有人及其子项的树数据结构)

我将如何使用MVVM模式在WPF中执行此操作?在我学习MVVM模式之前,我已经使用了代码并使用c#创建了动态视图来编码XAML视图并将其动态添加为子元素.但我不认为这是最好的方法,因为它看起来太单调乏味了.

我是MVVM模式的新手,所以我将如何做这个(使用数据绑定?)的一些小代码片段将非常有帮助.

我在XAML中编写了一个快速示例,说明了表单的外观:

在此输入图像描述

Bra*_*NET 7

使用DataTemplates 在WPF中解决了这个问题.在任何地方你需要一个"重复"的形式,你将设置这样的东西:

<ItemsControl ItemsSource="{Binding Jobs}">
    <ItemsControl.ItemTemplate>
        <DataTemplate>
            <...>
        </DataTemplate>
    </ItemsControl.ItemTemplate>
</ItemsControl>
Run Code Online (Sandbox Code Playgroud)

您可以使用它ListView来获取集合控件,该集合控件将显示DataTemplate绑定集合中每个项目的实例.里面的DataTemplate,你DataContext是绑定项集合,即.一个Job类的实例.

如果Jobs是,ObservableCollection<T>那么当从绑定集合中添加或删除项目时,控件将自动更新.