C# 将值传递给具有附加属性的DataTemplates
我正在使用一个数据网格,它有三列类型为C# 将值传递给具有附加属性的DataTemplates,c#,.net,wpf,C#,.net,Wpf,我正在使用一个数据网格,它有三列类型为DataGridTemplateColumn。这些列共享几乎相同的行为,因此使用几乎相同的模板。模板是复制粘贴的,只更改了一些资源 我想将模板重构为一个通用版本,该版本使用附加属性来提供必要的数据。我已尝试过此操作,但无法从CellTemplate中访问该属性。 我尝试过的方法有: 使用RelativeSource:TemplatedParent的绑定 使用RelativeSource与各种AnceStorType进行绑定 添加FrameworkPrope
DataGridTemplateColumn
。这些列共享几乎相同的行为,因此使用几乎相同的模板。模板是复制粘贴的,只更改了一些资源
我想将模板重构为一个通用版本,该版本使用附加属性来提供必要的数据。我已尝试过此操作,但无法从CellTemplate中访问该属性。
我尝试过的方法有:
- 使用RelativeSource:TemplatedParent的绑定
- 使用RelativeSource与各种AnceStorType进行绑定
- 添加
FrameworkPropertyMetadata选项。继承附加属性的
FrameworkPropertyMetadata
细胞模板似乎与周围环境有一种奇怪的分离程度。我错过了什么。如果没有,该问题的适当解决方案是什么?您的代码示例可能会有所帮助,但假设您已将属性附加到
数据网格
,您应该能够使用以下(未经测试)从CellTemplate
绑定到它:
FallbackValue
属性不是必需的,但是如果找不到绑定源,使用它可以避免绑定错误,这是一个很好的做法。您可以在尝试实现这一点的地方显示代码吗?请粘贴代码或共享您提出的解决方案,我想我在这里看到了同样的问题。我无法将行为附加到分层DataTemplates。如果不进行尝试,我认为这将不起作用,因为网格行不是可视化树的一部分,因此无法作为存储类型访问datagridtemplatecolumn。至少ListView中的GridViewColumns会发生这种情况
<TextBlock Text="{Binding Path=(YourNamespace:YourClassName.YourAttachedPropertyName),
RelativeSource={RelativeSource AncestorType=DataGrid}, FallbackValue=''}" />
<TextBlock Text="{Binding Path=(YourNamespace:YourClassName.YourAttachedPropertyName),
RelativeSource={RelativeSource AncestorType=DataGridTemplateColumn}, FallbackValue=''}" />