Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将值传递给具有附加属性的DataTemplates_C#_.net_Wpf - Fatal编程技术网

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=''}" />