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

标签 c# wpf forms xaml mvvm

我需要在 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 编码的快速示例,说明表单的外观:

enter image description here

最佳答案

此问题已在 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/

相关文章:

c# - 带动态列的 GridView - 显示 html

c# - 实体 SQL 比较没有毫秒的日期时间

c# - 无法在 Visual Studio 2019 中将 LocBaml 与 WPF .Net 5.0 项目一起使用

wpf - 有人知道 WPF 数据绑定(bind)示例的详尽集合吗?

javascript - 按钮未运行 JavaScript

php - php登录表单验证问题

c# - 在服务器端运行连续的自定义应用程序逻辑。入口点?

c# - 静态函数并发 ASP.NET

c# - 非常简单的 WPF 表单数据验证 - 怎么做?

javascript - POST 到 Node.js 服务器导致长时间加载,导致 ERR_EMPTY_RESPONSE