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中编写了一个快速示例,说明了表单的外观:

使用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>那么当从绑定集合中添加或删除项目时,控件将自动更新.