以编程方式为 DataGrid 创建 WPF DataGridTemplateColumn

2024-01-16

我希望能够根据我的数据源以编程方式创建 DataGridTemplateColumns。例如,如果我的源在特定列中有一个日期,我希望能够利用 Datepicker 控件。我知道这可以在设计时使用 xaml 和 DataGridTemplateColumn 轻松完成,但是,我将如何在运行时完成此任务?

我的最佳选择是 xamlreader.load 还是更传统的路线,例如:

Dim TempCol As Microsoft.Windows.Controls.DataGridTemplateColumn

我在后者方面没有取得任何成功。

Thanks.

-Paul

编辑: 这是我尝试使用的代码:

        Dim TempCol As New Microsoft.Windows.Controls.DataGridTemplateColumn

    TempCol.CellEditingTemplate = DataTemplate.Equals(DatePicker)

我收到 DatePicker 是一种类型,不能用作表达式。

我将此基于 WPF Toolkit 演示。http://windowsclient.net/wpf/wpf35/wpf-35sp1-toolkit-datagrid-feature-walkthrough.aspx http://windowsclient.net/wpf/wpf35/wpf-35sp1-toolkit-datagrid-feature-walkthrough.aspx

<dg:DataGridTemplateColumn Header="Date" MinWidth="100">
    <dg:DataGridTemplateColumn.CellEditingTemplate>
        <DataTemplate>
            <dg:DatePicker SelectedDate="{Binding Date}" SelectedDateFormat="Short" />
        </DataTemplate>
    </dg:DataGridTemplateColumn.CellEditingTemplate>
    <dg:DataGridTemplateColumn.CellTemplate>
        <DataTemplate>
            <TextBlock Text="{Binding Date, StringFormat=d}" />
        </DataTemplate>
    </dg:DataGridTemplateColumn.CellTemplate>
</dg:DataGridTemplateColumn>

Thanks!


您的代码不起作用的原因是您正在设置CellEditingTemplate列到一个bool(调用的结果DataTemplate.Equals(),而不是在代码中创建模板的实例。

您可以使用类似以下内容在代码中创建模板(相当于您提供的 XAML 代码片段):

DataGridTemplateColumn col = new DataGridTemplateColumn();
col.Header = "Date";

// Create a factory. This will create the controls in each cell of this
// column as needed.
FrameworkElementFactory factory =
    new FrameworkElementFactory(typeof(DatePicker));

// Bind the value of this cell to the value of the Date property of the
// DataContext of this row. The StringFormat "d" will be used to display
// the value.
Binding b = new Binding("Date");
b.StringFormat = "d";
factory.SetValue(DatePicker.SelectedDateProperty, b);

// Create the template itself, and add the factory to it.
DataTemplate cellEditingTemplate = new DataTemplate();
cellEditingTemplate.VisualTree = factory;

col.CellEditingTemplate = cellEditingTemplate;

我不确定这种方法是否比您自己加载 XAML 更有效。也许尝试两种方法,看看哪一种最适合您,并且效果更快?

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

以编程方式为 DataGrid 创建 WPF DataGridTemplateColumn 的相关文章

  • 了解 Lambda 表达式和委托 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我已经尝试解决这个问题很长一段时间了 阅读在线博客和文章 但到目前为止还没有成功 什么是代表 什么是 Lambda 表达式 两者的优点
  • 使用 XAML 地图控件在基于 C# VS2013 WPF 的 OpenStreetMap 的地图上添加热图图层

    我正在尝试使用 XAML MAP 控件 https xamlmapcontrol codeplex com https xamlmapcontrol codeplex com 在基于 C VS2013 WPF 的 OpenStreetMap
  • GridSplitter 从右侧调整大小 - 奇怪的行为

    使用 Kaxaml 从左侧调整大小可以按预期工作
  • 来自资源中 ImageSource 的 System.Drawing.Image

    我的问题与这个非常相似 wpf图像资源以及运行时在wpf控件中更改图像 https stackoverflow com questions 940592 wpf image resources and changing image in w
  • .tostring() 保留前导零[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 转换对象
  • 有没有办法使值只能由嵌套类 VB.NET 的父级访问?

    总的来说 根据OOP范式 我对封装的理解基本上是这样的 如果成员是私有的 则只能由类访问 如果成员受保护 则只能由基类和任何派生类访问它 如果成员是公开的 则任何人都可以访问 如果我有一个嵌套类 我可以声明一个属性只能由该类及其嵌套的父类访
  • 将 ARGB 拆分为字节值

    我有一个 ARGB 值存储为 int 类型 它是通过调用 ToArgb 来存储的 我现在想要来自 int 值的各个颜色通道的字节值 例如 int mycolor 16744448 byte r g b a GetBytesFromColor
  • 多选DataGridView没有CTRL键没有闪烁?

    我在表单 Form1 vb 上有一个 DataGridView 控件 需要允许用户在不使用 CTRL 键的情况下多选行 没有可用的键盘 他们使用触摸屏 我已启用 mutliselect 属性 并在 Form 类中包含以下代码 我的 Data
  • 从 RichTextBox 复制文本及其格式

    如何将 RichTextBox 中的文本及其格式复制到写字板或网络浏览器 就像复制纯文本一样 您可以使用Clipboard SetText method http msdn microsoft com en us library 6eahs
  • GridViewColumn 中的 WPF 文本格式设置

    我想将格式 对齐文本 货币格式 0000 00 应用于 GridViewColumn 中的列
  • VB.NET - 类中的扩展函数?

    我正在尝试创建一个类库 其中包含将二进制整数转换为十进制的函数 反之亦然 这样我就可以将其导入到另一个项目中 而无需重写该函数 它工作得很好 这是课程的一部分 Public Class BinaryDenary Public Shared
  • WPF PRISM 事件订阅不会消亡

    我有一个 PRISM RegionManager 其中有几个区域 顶部的功能区区域和其下方用于我的视图的主要内容区域 相当基本 该应用程序以主要内容区域中的 主页 视图开始 当我单击功能区上的按钮时 我将第二个视图注入内容区域并在区域管理器
  • 如何在我的应用程序中使用 Windows Key

    Like Windows Key E Opens a new Explorer Window And Windows Key R Displays the Run command 如何在应用程序的 KeyDown 事件中使用 Windows
  • 尝试添加注册表项时出现未处理的异常

    当我使用以下代码时 My Computer Registry LocalMachine OpenSubKey SOFTWARE Microsoft Windows CurrentVersion Run True SetValue Appli
  • 更改窗口的内容 (WPF)

    我创建了一个简单的 WPF 应用程序 它有两个 Windows 用户在第一个窗口中填写一些信息 然后单击 确定 这会将他们带到第二个窗口 这工作正常 但我试图将两个窗口合并到一个窗口中 这样只是内容发生了变化 我设法找到了这个更改窗口内容时
  • 用于添加新实体的 MVVM WPF ViewModel

    我对 WPF 中的 MVVM 的概念是 我们为应用程序中的每个模型都有一个 ViewModel 这意味着如果我们有 Customer 类 实体 那么我们将有 CustomerViewModel CustomerViewModel 将具有代表
  • Gridview rowdatabound访问数据项vb

    我正在尝试将 ImageUrl 指向 GridView 中模板字段中的图像 但不断收到错误 你调用的对象是空的 在这一行 Dim imagePath As String rowView image path 我以前从未在 GridView
  • 计算文本框中换行的行数

    我在文本框中有一行文本 并且换行为多行 如何计算文本框中换行的行数 你可以使用String Split int lineCount txt Text Split new n r StringSplitOptions None Length
  • Windows 服务应用程序中自托管 ASP.NET Web API 的问题

    我在网上看到了一些文章 描述了如何在 Windows 服务应用程序中自行托管 ASP NET Web API 请参阅here http www piotrwalat net hosting web api in windows servic
  • 英文日期差异

    接近重复 如何计算相对时间 https stackoverflow com questions 11 how do i calculate relative time 如何在 C 中计算某人的年龄 https stackoverflow c

随机推荐

  • 调试:当类型标记为可序列化时,如何调试“类型未标记为可序列化”异常

    我试图 Request Params crmid null 在网页中 但它不断抛出序列化异常 在中键入 QC Security SL SiteUser 装配 QC Security 版本 1 0 0 1 文化 中立 PublicKeyTok
  • 在 C# 中访问 WindowsInstaller.Installer COM 对象

    我找到了一个不错的Powershell功能 https gist github com MyITGuy 153fc0f553d840631269720a56be5136在 GitHub 上 它使用 WindowsInstaller Inst
  • ASP.NET MVC 3 Razor 递归函数

    好的 所以我想显示一个包含列表列表的列表 我无法知道要显示多少层 所以我想这就是我打破旧的递归例程的地方 不过 我在具体如何解决这个问题上遇到了麻烦 这是我到目前为止所拥有的 视图 简化 foreach MyObject item in M
  • HTML 页脚问题

    是否可以创建一个位于网站底部的页脚 div 无论中间有多少信息 目前 我的 div 的位置取决于我的正文中有多少内容 也可以看看 如何让页脚停留在网页的底部 https stackoverflow com questions 42294 h
  • 将一个项目的 Dll 引用引用到另一个项目

    我有 2 个项目 一个是用 VB NET 构建的 另一个是用 C NET 构建的 我想在 C NET 中使用 VB NET 的某些功能 因此我通过从系统浏览 dll 将 VB NET 解决方案的 dll 文件添加到 C NET 中作为参考
  • 如何将邻接矩阵保存为 CSV 文件?

    我在 R 中使用 CSV 文件创建了一个邻接矩阵 如下所示 Gene1 Gene2 Weight A B 1 A C 0 5 B D 0 5 A D 1 这是我的 R 代码 el read csv my csv sep t library
  • 为什么 std::getline 不阻塞?

    我在 Objective C 类中 在 Objective C 文件中 有以下代码 NSString readString string res std getline cin res return NSString stringWithC
  • Android:如何使用 HttpsURLConnection 以编程方式登录网页

    我是 Android 新手 也是 Java 新手 如果我的问题是一个基本命题 那么很抱歉 我必须编写一个 Android 应用程序 在后台登录一个 aspx 网页 从中获取一些数据 然后从该网页注销 并以编程方式完成这一切 基本上 该过程就
  • 使用 datetime.strftime 显示时区偏移中的 : 字符 [重复]

    这个问题在这里已经有答案了 给出的格式字符串是什么strftime这将给出与我看到的相同的输出isoformat gt gt gt from datetime import datetime gt gt gt import pytz gt
  • MVVM - 视图逻辑:视图与视图模型[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 应该 视图逻辑通常驻留在哪里 在视图中 包括后面的代码 还是在视图模型中 从逻辑上讲 我理解用于修改视图 使其动态 更改其元素属性的任何内容 V
  • 解析 JSON C# 错误

    我尝试获取 JSON 数据但出现错误 解析值时遇到意外字符 路径 行 0 位置 0 我正在使用 Net 4 5 和 JSON Net 框架 这是我的代码 WebClient net new WebClient string str awai
  • UIView 和 UITableView,reloadData 奇怪的延迟

    我的视图控制器的重画有些奇怪 视图控制器包含一个 UITableView 和一个微调器 我有一个更新提要函数 由 IBOutlet 触发 带来了spinner在我的视图控制器前面并放置一个doUpdate将函数放入 NSOperationQ
  • IE10 中的 jquery UI Draggable 通过滚动条拖动时出现 bug

    我有一个带有可拖动元素的 div 它在所有浏览器中都工作得很好 除了 IE10 存在一个问题 如果您尝试通过滚动条拖动该元素 它会滚动 直到您松开鼠标 在这种情况下该元素将捕捉到鼠标的当前位置 我已经设置了这个小提琴 http jsfidd
  • 如何在 PHP 中创建新运算符?

    我看到自己在执行以下代码来默认分配 PHP 上的所有类型 variable variable variable default value 我知道 5 3 我可以做到 variable variable default value 我想通过
  • 如何替换python3中的has_key?

    我尝试安装自动自我控制 https github com andreasgrill auto selfcontrol并在执行此命令时卡住 sudo usr bin python auto selfcontrol py 它显示错误 Attri
  • 如何将 Spring Boot 配置元数据文件转换为 HTML

    我确信一定有一种优雅的转身方式Spring Boot配置元数据文件 https docs spring io spring boot docs current reference html configuration metadata ht
  • 编译成功后找不到exe

    使用opencv在microsoft Visual Studio 2008中成功调试人脸检测代码后 找不到可执行文件 没有错误 只有三个警告 但它表明构建已成功 您可以进入项目设置并检查输出文件夹 在那里查找二进制文件 二进制不一定意味着e
  • 重命名 gtsummary、tbl_regression/tbl_stack 中的行

    我正在使用 gtsummary 并使用 tbl regression 和 tbl stack 函数将 11 个不同模型的输出堆叠在一起 我希望了解一个一致自变量的优势比在不同感兴趣的因变量之间如何变化 当我打印 tbl stack 输出时
  • 如何解码令牌并获取 Django 的 djangorestframework-jwt 包的信息

    我已经开始使用 djangorestframework jwt 包而不是 PyJWT 我只是不知道如何解码传入的令牌 我知道有验证令牌方法 我需要知道的是如何解码令牌并返回信息编码 我使用此方法来解码令牌并验证用户 首先我没有使用algor
  • 以编程方式为 DataGrid 创建 WPF DataGridTemplateColumn

    我希望能够根据我的数据源以编程方式创建 DataGridTemplateColumns 例如 如果我的源在特定列中有一个日期 我希望能够利用 Datepicker 控件 我知道这可以在设计时使用 xaml 和 DataGridTemplat