gpt4 book ai didi

wpf - 如何在 WPF 应用程序中构建动态数据输入表单?

转载 作者:行者123 更新时间:2023-12-04 07:30:26 25 4
gpt4 key购买 nike

我正在计划一个 WPF 应用程序,它将

  • 能够创建动态数据输入表 (意味着表单从数据库中的数据而不是 XAML 中获取要显示的字段、它们的顺序等)
  • 尽可能使用 MVVM 模式

  • 以下是我的计划:在客户数据输入 View 中,我将设置数据上下文:
    <UserControl.DataContext>
    <vm:DynamicFormViewModel/>
    </UserControl.DataContext>

    然后在我的 XAML 中包含一个元素作为表单的占位符:
    <UserControl.Content>
    <view:DynamicFormView x:Name="CustomerEntry"/>
    </UserControl.Content>

    然后在我的 ModelView 中我不想有静态属性,但我想将 XAML 构建为 ASP.NET 中的一个内置 HTML 控件,以这种方式:
    View view = new View();
    view.Children.Add(...)

    并以这种方式基于 ViewModel 从 Model 获取的数据(名字、姓氏)和元数据(字段标签、字段名称、字段帮助文本、字段显示顺序等)的集合构建 Grid。
  • 有没有人构建了一个可以以这种方式创建动态表单的 WPF 应用程序?
  • 你用过 MVVM 模式吗?
  • 是否可以以这种方式使用 MVVM 模式,或者 MVVM 模式是否预先假定 View 模型中的静态字段直接绑定(bind)到 View 中的静态元素?
  • 最佳答案

    您必须为各种字段数据类型编写数据模板,以便 WPF 将根据其类型选择如何显示您的数据。这种格式的东西:

    注意:这不是 WPF 只是伪代码

    <DataTemplate DataType="{x:Type DateTime}">
    <DatePicker Value="{Binding}"/>
    </DataTemplate>
    <DataTemplate DataType="{x:Type String}">
    <TextBox Text="{Binding}"/>
    </DataTemplate>

    它不必是原始类型。可以是 Email , DateApproved甚至是 Url类类型。例如
    class Customer  
    {
    public Email Email{get;set;}
    public DateTime DateApproved{get;set;}
    public URI Url{get;set;}
    }

    public class Email
    {
    public string Type{get;set;}
    public string Value{get;set;}
    }

    ..ETC...

    更新

    在 MSDN 上查看这个 WPF 动态 UI 示例: Dynamic Data Entry with WPF and LINQ

    关于wpf - 如何在 WPF 应用程序中构建动态数据输入表单?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/785927/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com