在 WPF DataGrid 的各个单元格上设置删除线的最佳方法?
在 WPF DataGrid 的各个单元格上将字体设置为删除线样式的最佳(简单)方法是什么?
...
我知道的选项是在单个单元格中插入 TextBlock 控件或使用 DataGridTemplateColumn - 并使用其中的 TextDecorations 属性。无论哪种方式,这都是一项艰巨的任务,我想使用 DataGrid 的默认自动生成列功能,特别是因为我的 ItemsSource 是 DataTable。
另外,有没有办法访问使用默认 DataGridTextColumn 生成的 TextBlock?
What is the best (easy) way to set the font to a strikethrough style on individual cells of the WPF DataGrid?
...
Options that I'm aware of are inserting TextBlock controls in individual cells or using a DataGridTemplateColumn - and using the TextDecorations property therein. Either way this is quite a mission, I'd like to use the default AutoGenerate Columns function of DataGrid, especially since my ItemsSource is a DataTable.
As and aside, is there any way to access the TextBlock generated using the default DataGridTextColumn?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
当然,您可以将 setter 包装在 DataTrigger 中以选择性地使用它。
Of course you can wrap the setter in a DataTrigger to use it selectively.
如果要根据特定单元格绑定删除线,则会遇到绑定问题,因为 DataGridTextColumn.Binding 仅更改 TextBox.Text 的内容。如果 Text 属性的值就是您所需要的,您可以绑定到 TextBox 本身:
但是如果您想要绑定到与 TextBox.Text 不同的内容,则必须通过 DataGridRow 进行绑定,DataGridRow 是 TextBox 中的父级。视觉树。 DataGridRow 有一个 Item 属性,可以访问用于整行的完整对象。
转换器看起来像这样,假设某些东西是布尔类型:
If you want to bind the strikethrough based on a particular cell, you have a binding problem, because the DataGridTextColumn.Binding changes only the content of TextBox.Text. If the value of the Text property is all you need you can bind to the TextBox itself:
But if you want to bind to something different than TextBox.Text, you have to bind through the DataGridRow, which is a parent of the TextBox in the visual tree. The DataGridRow has an Item property, which gives access to the complete object used for the whole row.
The converter looks like this, assuming the something is of type boolean: