在我的xaml中,我修改了每个列标题以包含一个按钮。对于命令参数,我想使用列的数据字段名称,而不是标题内容。例如。而不是标题内容的“职位”,我想要“JOB_TITLE”。
对于标题内容,我会使用:
<Button Command="{Binding DataContext.OpenFilterCommand, RelativeSource={RelativeSource AncestorType=UserControl}}" CommandParameter="{TemplateBinding Content}">
如何获取实际字段名称?
答案 0 :(得分:5)
如果我认为正确,您希望 绑定属性名称绑定到哪个列作为命令参数传递给OpenFilterCommand 。
假设您的DataGrid列是这样的:
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding NAME}"/>
<DataGridTextColumn Binding="{Binding JOB_TITLE}" />
</DataGrid.Columns>
并希望将属性名称JOB_TITLE
作为命令参数传递。这可以这样实现:
<Button Command="{Binding DataContext.OpenFilterCommand,
RelativeSource={RelativeSource AncestorType=UserControl}}"
CommandParameter="{Binding Column.Binding.Path.Path,
RelativeSource={RelativeSource Mode=TemplatedParent}}"/>
<强>说明强>
TemplatedParent( DataGridColumnHeader ) - &gt;列( DataGridTextColumn ) - &GT;绑定( BindingBase ) - &gt;路径( PropertyPath ) - &gt;路径(实际PropertyName )