我需要在 WPF 中创建动态表单。例如,假设我需要允许用户创建一个家谱,其中包含每个人的信息,并且每个人都将拥有有关其职业的信息。
class Person
{
int age;
int dateOfBirth;
List<Job> jobList = new List<Job>();
}
class Job
{
string title;
int salary;
}
该程序需要能够包含允许输入类(class)所有成员数据的字段,包括多个作业。我希望表单数据(可能)在 XAML 中编码,如果他们单击“添加人员”按钮,它将展开另一个人员输入框以允许用户添加有关该人员的信息。这与“添加职位”相同,但职位仅添加到该人名下。
(请注意,这的最终结果将是一个树状数据结构,其中包含所有的人和他们的 child )
我将如何使用 MVVM 模式在 WPF 中执行此操作?在我学习 MVVM 模式之前,我已经使用代码隐藏并使用 c# 创建动态 View 来对 XAML View 进行编码并将其动态添加为子元素。但我认为这不是最好的方法,因为它看起来太乏味了。
我是 MVVM 模式的新手,所以一些关于如何执行此操作(使用数据绑定(bind)?)的小代码片段会非常有帮助。
我制作了一个用 XAML 编码的快速示例,说明表单的外观:
最佳答案
此问题已在 WPF 中使用 DataTemplate
解决秒。在任何你需要“重复”表格的地方,你都会设置这样的东西:
<ItemsControl ItemsSource="{Binding Jobs}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<...>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
您使用 ListView
获取一个集合控件,它将显示 DataTemplate
的一个实例对于绑定(bind)集合中的每个项目。 DataTemplate
里面, 你的 DataContext
是集合内的绑定(bind)项,即。 Job
的实例类(class)。
如果Jobs
是一个ObservableCollection<T>
然后控件将在绑定(bind)集合中添加或删除项时自动更新。
关于c# - 如何使用 MVVM 模式在 WPF 中创建动态表单?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25728180/