Wpf 从标头模板中查找DataGridColumn
如何从HeaderTemplate模板中找到DataGridTextColumn?是否有一种仅使用XAML执行此操作的方法?我尝试了DataGridTextColumn类型的FindAncestor,但找不到它Wpf 从标头模板中查找DataGridColumn,wpf,xaml,data-binding,Wpf,Xaml,Data Binding,如何从HeaderTemplate模板中找到DataGridTextColumn?是否有一种仅使用XAML执行此操作的方法?我尝试了DataGridTextColumn类型的FindAncestor,但找不到它 我知道DataGridTextColumn不是可视化树的一部分。有什么解决方法吗?您真的需要整个column对象吗?DataContext将是作为标头传入的任何内容,例如 <DataGridTextColumn Header="Name" Binding="{Binding Nam
我知道DataGridTextColumn不是可视化树的一部分。有什么解决方法吗?您真的需要整个column对象吗?DataContext将是作为标头传入的任何内容,例如
<DataGridTextColumn Header="Name" Binding="{Binding Name}">
<DataGridTextColumn.HeaderTemplate>
<DataTemplate>
<TextBlock Text="{Binding}" Foreground="Red" />
</DataTemplate>
</DataGridTextColumn.HeaderTemplate>
</DataGridTextColumn>
这将显示标题中的名称和列宽。使用查找祖先works在datagrid中按索引访问列
<DataGrid ItemsSource="{Binding Data}">
<DataGrid.Columns>
<DataGridTextColumn x:Name="nameColumn" Header="Name" Binding="{Binding Name}">
<DataGridTextColumn.HeaderTemplate>
<DataTemplate>
<TextBlock Foreground="Red">
<Run Text="{Binding Mode=OneWay}" />
<Run Text=" - " />
<Run Text="{Binding Columns[0].ActualWidth, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type DataGrid}}, Mode=OneWay}" />
</TextBlock>
</DataTemplate>
</DataGridTextColumn.HeaderTemplate>
</DataGridTextColumn>
</DataGrid.Columns>
你能给我们一个例子,说明你试图对这个列做什么,以及你试图从XAML中的什么地方访问它吗?
<DataGrid ItemsSource="{Binding Data}">
<DataGrid.Columns>
<DataGridTextColumn x:Name="nameColumn" Header="Name" Binding="{Binding Name}">
<DataGridTextColumn.HeaderTemplate>
<DataTemplate>
<TextBlock Foreground="Red">
<Run Text="{Binding Mode=OneWay}" />
<Run Text=" - " />
<Run Text="{Binding Columns[0].ActualWidth, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type DataGrid}}, Mode=OneWay}" />
</TextBlock>
</DataTemplate>
</DataGridTextColumn.HeaderTemplate>
</DataGridTextColumn>
</DataGrid.Columns>