将值传递给具有附加属性的DataTemplates

时间:2011-11-26 06:07:06

标签: c# .net wpf

我正在使用具有三列DataGridTemplateColumn类型的数据网格。这些列共享几乎相同的行为,因此使用几乎相同的模板。这些模板是复制粘贴的,并且更改了一些资源。

我想将模板重构为通用版本,该版本使用附加属性来提供必要的数据。我试过这个但是无法从CellTemplate.

中访问该属性

我尝试的方法是:

  • 使用RelativeSource的绑定:TemplatedParent。
  • 使用具有各种AncestorTypes的RelativeSource进行绑定。
  • FrameworkPropertyMetadataOptions.Inherits添加到所附属性的FrameworkPropertyMetadata

CellTemplate似乎与周围环境有着奇怪的分离程度。我错过了什么如果没有,这个问题的适当解决方案是什么?

1 个答案:

答案 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属性不是必需的,但如果无法找到绑定源,最好使用它来避免绑定错误。