我正在计划一个WPF应用程序
以下是我计划如何进行的:在客户数据输入视图中,我将设置数据上下文:
<UserControl.DataContext>
<vm:DynamicFormViewModel/>
</UserControl.DataContext>
Run Code Online (Sandbox Code Playgroud)
然后在我的XAML中包含一个元素作为表单的占位符:
<UserControl.Content>
<view:DynamicFormView x:Name="CustomerEntry"/>
</UserControl.Content>
Run Code Online (Sandbox Code Playgroud)
然后在我的ModelView中我想要没有静态属性,但是我希望以这种方式将XAML构建为ASP.NET中的一个构建的HTML控件:
View view = new View();
view.Children.Add(...)
Run Code Online (Sandbox Code Playgroud)
并以这种方式基于ViewModel从Model获取的数据(firstname,lastname)和元数据(字段标签,字段名称,字段帮助文本,字段显示顺序等)的集合构建Grid.
您必须为各种字段数据类型编写数据模板,以便WPF根据其类型选择如何显示数据.这种格式的东西:
注意:这不是WPF只是伪代码
<DataTemplate DataType="{x:Type DateTime}">
<DatePicker Value="{Binding}"/>
</DataTemplate>
<DataTemplate DataType="{x:Type String}">
<TextBox Text="{Binding}"/>
</DataTemplate>
Run Code Online (Sandbox Code Playgroud)
它不一定是原始类型.它可以是一种类型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;}
}
Run Code Online (Sandbox Code Playgroud)
..等等...
更新
在MSDN上查看此WPF动态UI示例:使用WPF和LINQ进行动态数据输入
| 归档时间: |
|
| 查看次数: |
17167 次 |
| 最近记录: |