iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > ASP.NET >WPF使用代码创建数据模板DataTemplate
  • 729
分享到

WPF使用代码创建数据模板DataTemplate

2024-04-02 19:04:59 729人浏览 安东尼
摘要

起因 我们都知道, 在XAML界面当中编写DataTemplate很简单, 但是有时候我们需要在代码当中去设置DataTemplate。 该怎么办? 比如, 实际需求是DataGri

起因

我们都知道, 在XAML界面当中编写DataTemplate很简单, 但是有时候我们需要在代码当中去设置DataTemplate。

该怎么办?

比如, 实际需求是DataGrid当中需要创建100个DataTemplate列, 很明显,这些列不太方便在XAML中编写。

这个时候,我们就需要在代码当中动态生成模板列。

答案

如下面所示,我创建了一个DataGridTemplateColumn,其中包含了一个StackPanel里面放了两个Button按钮。

                <DataGridTemplateColumn>
                    <DataGridTemplateColumn.CellTemplate>
                        <DataTemplate>
                            <StackPanel Orientation="Horizontal">
                                <Button Content="编辑"/>
                                <Button Content="删除"/>
                            </StackPanel>
                        </DataTemplate>
                    </DataGridTemplateColumn.CellTemplate>
                </DataGridTemplateColumn>

现在就是, 我们需要把这个过程用代码去生成, 这个时候我们就可以用到FrameworkElementFactory 类。

步骤分为几步:

  • 创建DataGridTemplateColumn 对象, 设置Header等内容
DataGridTemplateColumn templateColumn = new DataGridTemplateColumn();
templateColumn.Header = "标题";
  • 创建 FrameworkElementFactory 对象, 设置Orientation属性水平排列
 FrameworkElementFactory factory = new FrameworkElementFactory(typeof(StackPanel));
 factory.SetValue(StackPanel.OrientationProperty, Orientation.Horizontal);
  • 向 FrameworkElementFactory 对象追加一个factory对象
            FrameworkElementFactory buttonEdit = new FrameworkElementFactory(typeof(Button));
            buttonEdit.SetValue(ContentProperty, "编辑");
            factory.AppendChild(buttonEdit);

            FrameworkElementFactory buttonDel = new FrameworkElementFactory(typeof(Button));
            buttonDel.SetValue(ContentProperty, "删除");
            factory.AppendChild(buttonDel);
  • 创建DataTemplate对象, 设置VisualTree 值为factory
DataTemplate dataTemplate = new DataTemplate();
dataTemplate.VisualTree = factory;
  • 最后把DataGridTemplateColumn 的CellTemplate 值设置为dataTemplate
templateColumn.CellTemplate = dataTemplate;

最终效果

关于整个过程梳理

有一点,我们需要清楚, 在XAML界面当中编写的任何代码, 其实本质上都是转化成C#代码, 既然如此来说, 只要XAML有的对象,我们都可以用C#代码编写, 但是为什么一般我们不这么做, 是因为XAML更加容易去表达界面上的元素, 代码的可视化以及可维护性。

再回到上面, 我们需要清楚上面的流程, 我们通过FrameworkElementFactory 创建了一个完整的视觉树的对象,里面包含了一个StackPanel容器,容器中放置了两个Button控件,最终把这个 FrameworkElementFactory 对象给了DataTemplate当中的VisualTree, 这里的意思是 我们给DataTemplate设置了可视化的视觉树结构, 最终DataTemplate决定了 DataGridTemplateColumn 的视觉呈现。

完整代码

        DataGridTemplateColumn CreateDataGridTemplateColumn()
        {
            DataGridTemplateColumn templateColumn = new DataGridTemplateColumn();
            templateColumn.Header = "标题";

            FrameworkElementFactory factory = new FrameworkElementFactory(typeof(StackPanel));
            factory.SetValue(StackPanel.OrientationProperty, Orientation.Horizontal);

            FrameworkElementFactory buttonEdit = new FrameworkElementFactory(typeof(Button));
            buttonEdit.SetValue(ContentProperty, "编辑");
            factory.AppendChild(buttonEdit);

            FrameworkElementFactory buttonDel = new FrameworkElementFactory(typeof(Button));
            buttonDel.SetValue(ContentProperty, "删除");
            factory.AppendChild(buttonDel);

            DataTemplate dataTemplate = new DataTemplate();
            dataTemplate.VisualTree = factory;

            templateColumn.CellTemplate = dataTemplate;

            return templateColumn;
        }

 到此这篇关于WPF使用代码创建数据模板DataTemplate的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持编程网。

--结束END--

本文标题: WPF使用代码创建数据模板DataTemplate

本文链接: https://www.lsjlt.com/news/138871.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • WPF使用代码创建数据模板DataTemplate
    起因 我们都知道, 在XAML界面当中编写DataTemplate很简单, 但是有时候我们需要在代码当中去设置DataTemplate。 该怎么办 比如, 实际需求是DataGrid...
    99+
    2024-04-02
  • WPF怎么使用代码创建数据模板DataTemplate
    这篇文章主要讲解了“WPF怎么使用代码创建数据模板DataTemplate”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“WPF怎么使用代码创建数据模板DataTemplate”吧!起因我们都...
    99+
    2023-06-29
  • WPF中的数据模板用法介绍
    数据模板常用在3种类型的控件, 下图形式: 1.Grid这种列表表格中修改Cell的数据格式, CellTemplate可以修改单元格的展示数据的方式。2.针对列表类型的控件, 例...
    99+
    2024-04-02
  • 云数据库PostgreSQL创建参数模板
    创建参数模板可以帮助我们在创建数据库实例时快速配置参数,提高数据库的性能和安全性。以下是创建云数据库PostgreSQL参数模板的步...
    99+
    2023-09-21
    数据库
  • access怎么利用模板创建数据库
    要使用Access创建数据库,可以按照以下步骤操作:1. 打开Access应用程序并选择“新建空白数据库”模板。2. 选择保存数据库...
    99+
    2023-09-21
    access 数据库
  • C# 使用Word模板导出数据的实现代码
    使用NPOI控件导出数据到Word模板中方式: 效果如下: Word模板: 运行结果: 实现如下: Student.cs using System; using System...
    99+
    2024-04-02
  • navicat怎么用代码创建数据库
    可以使用 navicat 中的 sql 代码创建数据库,具体步骤包括:连接到数据库服务器。打开 sql 查询窗口。编写创建数据库代码,格式为:create database 数据库名称;...
    99+
    2024-04-23
    navicat
  • navicat怎么用代码创建数据表
    使用 navicat 通过 sql 代码创建数据表可通过以下步骤实现:连接数据库并打开 sql 编辑器。输入 sql 代码,指定数据表名和列信息。执行 sql 代码。检查对象树中创建的数...
    99+
    2024-04-23
    navicat
  • 如何编写用模板的方式创建守护进程代码
    这篇文章主要介绍“如何编写用模板的方式创建守护进程代码”,在日常操作中,相信很多人在如何编写用模板的方式创建守护进程代码问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何编写用模板的方式创建守护进程代码”的疑...
    99+
    2023-06-09
  • python数据挖掘使用Evidently创建机器学习模型仪表板
    目录1、安装包2、导入所需的库3、加载数据集4、创建模型5、创建仪表板6、可用报告类型1)数据漂移2)数值目标漂移3)分类目标漂移4)回归模型性能5)分类模型性能6)概率分类模型性能...
    99+
    2024-04-02
  • python代码创建数据库步骤
    目录 一、安装相应的数据库连接库 二、导入所需的库和模块: 三、建立数据库连接: 四、创建游标对象: 五、执行 SQL 查询和操作: 六、提交更改: 七、关闭数据库连接: 示例代码: 一、安装相应的数据库连接库 根据你使用的数据库类型...
    99+
    2023-10-22
    数据库 python
  • 如何创建可重用的 C++ 函数模板?
    函数模板可用于创建可适用于多种数据类型的函数,只需指定使用的类型即可,从而节省时间并减少重复代码。具体步骤如下:使用指定数据类型。指定返回类型。命名函数。指定参数列表。 如何创建可重用...
    99+
    2024-04-15
    c++ 函数模板
  • mongodb创建数据库代码怎么写
    在MongoDB中,可以使用以下代码来创建数据库:```javascript// 引入MongoDB驱动程序const MongoC...
    99+
    2023-08-24
    mongodb 数据库
  • 怎么使用Java代码在SAP Marketing Cloud上创建Contact数据
    本篇内容主要讲解“怎么使用Java代码在SAP Marketing Cloud上创建Contact数据”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么使用Java代码在SAP Marketin...
    99+
    2023-06-02
  • python绘图subplots函数使用模板的示例代码
    背景 使用python进行图像可视化,很多情况下都需要subplots将多幅图像绘制在一个figure中。因为使用频率足够高,那么程序员就需要将其“封装”,方便复用,所以,这里将笔者...
    99+
    2024-04-02
  • python创建模板文件及使用教程示例
    目录写作思路1、模板的定义2、如何利用模板生成多个文件运行结果写作思路 1、模板的定义 2、如何利用模板生成多个文件 在很多情况下,我们会创建出很多样式相似甚至是相同的类文件,比如在...
    99+
    2024-04-02
  • mysql创建数据库的代码怎么写
    要在MySQL中创建一个数据库,可以使用以下SQL语句: CREATE DATABASE `数据库名`; 例如,要在MySQL中创...
    99+
    2024-03-02
    mysql 数据库
  • Qt创建SQlite数据库的示例代码
    Qt 创建 SQlite数据库 void Widget::initDB() { // 创建并打开数据库 QSqlDatabase database; data...
    99+
    2024-04-02
  • MySQL创建数据表的代码怎么写
    MySQL创建数据表的代码写法如下: CREATE TABLE table_name ( column1 datatype ...
    99+
    2024-04-09
    MySQL
  • 函数模板在 C++ 代码优化中的应用?
    函数模板通过定义泛型函数提高了代码的可重用性,从而优化 c++++ 代码:函数模板基础:使用泛型类型参数定义函数,允许函数适用于不同数据类型。实战案例:findmax 函数模板可用于任何...
    99+
    2024-04-15
    c++ 函数模板
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作