我需要在DataGridTemplateColumn中为DataGrid创建一个新属性,其中该属性将是boolean,并将指示是否通过以下规则评估列;当前行的值与前一行不同时,单元格应为粗体。
<DataGridTextColumn Header = "SG"
Binding="{Binding SteelGrade}"
IsEvaluated="True" <!-- indicates that this column will be bold if the current value is different from the previous line value-->
>
</ DataGridTextColumn>
所以我需要创建IsEvaluated以及规则。
有人会有任何想法或链接可以告诉我如何做到这一点吗?
答案 0 :(得分:0)
这不应该太难。有几种不同的方法可以做到这一点。一种方法是确保集合中的每个项目都有对前一项的引用(确保它是WeakReference
以避免垃圾收集问题!)然后为您的项目SameAsLast
创建一个属性,它只是检查与前一项的相等性。最后,使用适当的转换器将TextBlock
的{{1}}属性绑定到FontWeight
。这可能是最有效的选项,但它确实需要在每次对项目进行排序时构建引用链。
如果您正在寻找一种通用的方法来执行此操作而不修改项类本身,这也是可能的。例如,您可以将SameAsLast
的{{1}}属性设置为FontWeight
,然后使用一个TextBlock
来获取该项并检查其与上一个项目。您需要将整个集合作为"{Binding}"
传递,并且 - 确保集合是IValueConverter
- 使用ConverterParameter
来获取相关项目的索引,使用{{1找到前一个,然后检查是否相等,返回相应的IList<T>
。
当然,毫无疑问还有很多其他方法可以做到,但希望你能得到这个想法。