在WPF DataGrid的单个单元格上设置删除线的最佳方法是什么?

在WPF DataGrid的单个单元格上将字体设置为删除线样式的最佳(简单)方法是什么?

我所知道的选项是在单个单元格中插入TextBlock控件或使用DataGridTemplateColumn – 并在其中使用TextDecorations属性。 无论哪种方式,这都是一项使命,我想使用DataGrid的默认AutoGenerate Columns函数,特别是因为我的ItemsSource是一个DataTable。

除了之外,有没有办法访问使用默认DataGridTextColumn生成的TextBlock?

     

当然,您可以将setter包装在DataTrigger中以有选择地使用它。

如果要基于特定单元格绑定删除线,则会出现绑定问题,因为DataGridTextColumn.Binding仅更改TextBox.Text的内容。 如果您需要Text属性的值,则可以绑定到TextBox本身:

  

但是如果要绑定到与TextBox.Text不同的东西,则必须通过DataGridRow进行绑定,DataGridRow是可视树中TextBox的父级。 DataGridRow有一个Item属性,可以访问用于整行的完整对象。

  

转换器看起来像这样,假设某些东西是boolean类型:

 public class SomePropertyToTextDecorationsConverter: IValueConverter { public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { if (value is bool) { if ((bool)value) { TextDecorationCollection redStrikthroughTextDecoration = TextDecorations.Strikethrough.CloneCurrentValue(); redStrikthroughTextDecoration[0].Pen = new Pen {Brush=Brushes.Red, Thickness = 3 }; return redStrikthroughTextDecoration; } } return new TextDecorationCollection(); } public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) { throw new NotImplementedException(); } }