我需要在WPF中创建动态表单。例如,假设我需要允许用户创建一个包含每个人信息的家谱,每个人都会有关于他们职业的信息。
class Person
{
int age;
int dateOfBirth;
List<Job> jobList = new List<Job>();
}
class Job
{
string title;
int salary;
}
该程序需要能够包含允许类中所有成员输入数据的字段,包括多个作业。我希望表单数据(可能)在XAML中编码,如果他们点击按钮&#34;添加人物&#34;它将扩展另一个人的输入框,以允许用户添加有关该人的信息。这与&#34; Add Job&#34;相同。但这些工作只是在那个人之下。
(请注意,最终结果将是包含所有人及其子女的树数据结构)
我如何使用MVVM模式在WPF中执行此操作?在我学习MVVM模式之前,我已经使用了代码并使用c#创建了动态视图来编码XAML视图并将其动态添加为子元素。但我不认为这是最好的方法,因为它似乎太乏味了。
我是MVVM模式的新手,所以一些关于我如何做到这一点的小代码片段(使用数据绑定?)会非常有帮助。
我在XAML中编写了一个快速示例,说明了表单的外观:
答案 0 :(得分:5)
使用DataTemplate
s在WPF中解决了此问题。在任何你需要“重复”形式的地方,你会设置这样的东西:
<ItemsControl ItemsSource="{Binding Jobs}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<...>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
使用ListView
获取集合控件,该集合控件将为绑定集合中的每个项目显示DataTemplate
的实例。在DataTemplate
内,您的DataContext
是集合中的绑定项,即。 Job
类的一个实例。
如果Jobs
是ObservableCollection<T>
,那么当从绑定集合中添加或删除项目时,控件会自动更新。