我正在计划一个WPF应用程序,它将
我打算这样做:在客户数据输入 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从模型获取的数据(名字,姓氏)和元数据(字段标签,字段名称,字段帮助文本,字段显示顺序等)的集合为基础构建Grid。
最佳答案
您将必须为各种字段数据类型编写数据模板,以便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;}
}
..等等...
更新
在MSDN上查看以下WPF动态UI示例:Dynamic Data Entry with WPF and LINQ