我正在使用具有三列DataGridTemplateColumn
类型的数据网格。这些列共享几乎相同的行为,因此使用几乎相同的模板。这些模板是复制粘贴的,并且更改了一些资源。
我想将模板重构为通用版本,该版本使用附加属性来提供必要的数据。我试过这个但是无法从CellTemplate.
我尝试的方法是:
FrameworkPropertyMetadataOptions.Inherits
添加到所附属性的FrameworkPropertyMetadata
。CellTemplate似乎与周围环境有着奇怪的分离程度。我错过了什么如果没有,这个问题的适当解决方案是什么?
答案 0 :(得分:0)
您的代码示例会有所帮助,但假设您已将属性附加到DataGrid
,则应该能够使用以下内容从CellTemplate
绑定到它(未经测试) :
<TextBlock Text="{Binding Path=(YourNamespace:YourClassName.YourAttachedPropertyName),
RelativeSource={RelativeSource AncestorType=DataGrid}, FallbackValue=''}" />
如果您将该属性附加到DataGridTemplateColumn
,则可以使用:
<TextBlock Text="{Binding Path=(YourNamespace:YourClassName.YourAttachedPropertyName),
RelativeSource={RelativeSource AncestorType=DataGridTemplateColumn}, FallbackValue=''}" />
FallbackValue
属性不是必需的,但如果无法找到绑定源,最好使用它来避免绑定错误。