Wpf 从DataGridTemplateColumn中获取绑定表达式';代码隐藏中的Cells模板
我正在寻找在代码隐藏中从DataGridTemplateColumn的CellTemplate中读取绑定表达式的可能性。 我的模板列如下所示:Wpf 从DataGridTemplateColumn中获取绑定表达式';代码隐藏中的Cells模板,wpf,binding,datagrid,code-behind,datagridtemplatecolumn,Wpf,Binding,Datagrid,Code Behind,Datagridtemplatecolumn,我正在寻找在代码隐藏中从DataGridTemplateColumn的CellTemplate中读取绑定表达式的可能性。 我的模板列如下所示: <DataGridTemplateColumn x:Name="..." Header="..."> <DataGridTemplateColumn.CellTemplate> <DataTemplate> <TextBlock Text="{Binding Path=City}" Style="..
<DataGridTemplateColumn x:Name="..." Header="...">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Path=City}" Style="..."/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<ComboBox ... />
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>
现在,我想获取datatemplate中绑定路径的值。在这种情况下,我希望得到值“City”
任何提示都将不胜感激。如果您想知道如何使用路径值,那就太好了 这是一个类似问题的答案 编辑:
这很好,我不久前写了一个excel转换器:),但我的版本不支持绑定点符号和模板列。TemplateColumns的问题在于,您不知道是否有1个或多个绑定以及可视化树的外观。也许在第一步中,您可以沿着模板列的可视树走到第一个绑定并执行它。首先,您必须到达CellTemplate中的TextBlock 实际上,@blindmeis”的回答提供了一个线索,但我将尝试在一个样本中用不同的方法进行解释 例如,在代码隐藏中,您尝试在MouseDoubleClick事件上访问TextBlock的对象 您可以使用e.OriginalSource访问TextBlock对象 然后,BindingOperations.GetBinding(..,..).Path.Path将为您提供您要查找的内容
var tb = (e.OriginalSource as TextBlock);
if (tb == null)
return;
之后,您可以使用第一种方式或第二种方式:
var binding = BindingOperations.GetBinding(tb, TextBlock.TextProperty);
if (binding == null)
return;
var bindingPath = binding.Path.Path;
第一种方式(注意,在第一条路径表达式前有一个问号):
第二种方式:
var binding = BindingOperations.GetBinding(tb, TextBlock.TextProperty);
if (binding == null)
return;
var bindingPath = binding.Path.Path;
看看这个帖子。我希望这会有帮助。您好,blindmeis,我正在为DataGrids编写一个excel导出,我正在为此使用绑定值,但我在获取所有模板列的值时遇到问题。对于普通列,我使用以下值获取值:if(gridColumn是DataGridBoundColumn){Binding Binding=((DataGridBoundColumn)gridColumn)。Binding as Binding;}