c# - 如何从各种模板动态生成网格
问题描述
我对 WPF 比较陌生,我正在尝试创建一个系统,您可以在其中单击一个按钮来添加一个新选项卡,该选项卡会生成相应的网格来显示内容。例如,当您打开一个新选项卡时,第一页将是“主页”,然后您可以在此新选项卡中选择导航到其他内容,例如“选项”。然后,您可以添加另一个选项卡并重复该过程等。IT 就像 Google Chrome 一样,每个选项卡代表另一种浏览器体验。
到目前为止,我的选项卡都在工作,但是我仍然坚持应该如何为每个选项卡生成网格。有人对我如何做到这一点有任何建议吗?
解决方案
- 创建具有属性的抽象
TabData
基类。Header
string
- 为您想要的每种类型的选项卡创建一个派生类
TabData
(例如 HomeData、OptionsData 等) - 创建一个具有
Items
type 属性的视图模型IEnumerable<TabData>
。 绑定to的
ItemsSource
属性并为每个具体类型定义一个隐式:TabControl
Items
DataTemplate
TabData
<TabControl ItemsSource="{Binding Items}"> <TabControl.ItemTemplate> <DataTemplate> <TextBlock Text="{Binding Header}" /> </DataTemplate> </TabControl.ItemTemplate> <TabControl.Resources> <DataTemplate DataType="{x:Type local:HomeData}"> ... </DataTemplate> <DataTemplate DataType="{x:Type local:OptionsData}"> ... </DataTemplate> </TabControl.Resources> </TabControl>
定义选项卡的DataTemplate
外观并且可以包含一个DataGrid
或任何其他元素。
推荐阅读
- windows - 有没有办法在 Windows 10 中对文件进行密码保护?
- c - 怎么能做插入排序,但要打印从最高到最低的 GPA?
- sql-server - LocalDB 单独安装连接字符串
- python - AttributeError 对象没有“find_all”的属性
- loops - cmd 批处理变量行为不直观
- sql-server - 将数据库从 SSMS 导出到 .mdf 文件并连接到 vb.net 应用程序
- python - 如何拆分具有多个选项的熊猫系列?
- forms - 访问:添加具有相同数据的记录,ID 除外
- php - 在 Symfony 5 中从多个数据库恢复数据的问题
- accessibility - 网页上嵌入 Google 幻灯片的辅助功能