gpt4 book ai didi

c# - 动态 WPF 表单创建方法

转载 作者:太空宇宙 更新时间:2023-11-03 12:56:58 25 4
gpt4 key购买 nike

我将要从 DataTable 数据创建动态 WPF UI 窗体。屏幕会相当复杂。它们将包含文本框、组框、复选框、按钮、数据网格等。其中一些是可见的,一些是连接事件处理程序之类的。

考虑到性能影响以及编写和维护源代码的复杂性要求,您会选择哪种创建这些动态屏幕的方法。请注意,此代码将运行很多次,因此它必须高效且快速。我正在考虑这些选项:

  1. 在代码中创建控件,将它们组装成树并将树(网格控件)用作 WPF 表单的根元素。

1.a) 通过 XAMLReader 从该屏幕对象树创建 XAML,并通过 WPF 窗体中的 XAMLReader 加载它。创建 XAML 对我来说似乎是多余的,因为我可以将构建的树直接用作 WPF 表单的内容。

  1. 使用 XMLDocument 类创建标签、对象及其属性。创建一个像这样的 XAML,然后以 WPF 形式加载该 XAML。

谢谢,

米迦勒

最佳答案

考虑在 ListView 中显示您的表单,并为每个表单字段文本框、组框、复选框、按钮、数据网格等创建一个数据模板。

<ListBox ItemsSource="{Binding DataFormFields}"

<DataTemplate DataType="YourTextClass">
<StackPanel>
<TextBlock Text="{Binding LabelText}" />
<TextBox Text="{Binding ValueText}" />
</StackPanel>
</DataTemplate>

<DataTemplate DataType="YourCheckClass">
<StackPanel>
<CheckBox Content="{Binding LabelText}"
IsChecked="{Binding Checked}"/>
</StackPanel>
</DataTemplate>

有关 DataTemplates 的更多信息,请参阅 https://learn.microsoft.com/en-us/dotnet/framework/wpf/data/data-templating-overview

每个数据模板都应与您的表单字段类之一相关联,使用 DataType 属性,这将使列表框自动使用正确的数据模板。更多详情:

https://learn.microsoft.com/en-us/dotnet/api/system.windows.datatemplate.datatype?view=netframework-4.7.2

关于c# - 动态 WPF 表单创建方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33567089/

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