Это распространенное заблуждение, что DataGridColumn
, являющийся объектом зависимости, является частью визуального дерева.Это не.Таким образом, даже если мы создадим наследуемое свойство зависимостей (точно так же как DataContext
или FlowDirection
, которое автоматически распространяется вниз по визуальному родительскому элементу к его дочерним элементам), новое свойство ToolTip
не будет переходить к отдельнымячейки, поскольку эти ячейки не являются дочерними элементами столбца таблицы данных.
Итак, теперь, когда мы это знаем, остался только один путь - добавить привязку в CellStyle
и привязать к свойству self Column.ToolTip
.Если вы решили использовать ToolTipTemplate
, вы можете добавить ContentControl
и затем связать его с шаблоном контента.
Примерно так ...
<tk:DataGrid x:Name="MyDataGrid" RowHeaderWidth="15"
ItemsSource="{StaticResource MyData}"
AutoGenerateColumns="False">
<tk:DataGrid.CellStyle>
<Style TargetType="{x:Type tk:DataGridCell}">
<Setter Property="ToolTip">
<Setter.Value>
<ContentControl
ContentTemplate="{Binding Column.ToolTipTemplate,
RelativeSource={RelativeSource FindAncestor,
AncestorType={x:Type tk:DataGridCell}}}"/>
</Setter.Value>
</Setter>
<Style.Triggers>
<DataTrigger
Binding="{Binding Column.ToolTipTemplate,
RelativeSource={RelativeSource Self}}"
Value="{x:Null}">
<Setter Property="ToolTip" Value="{x:Null}"/>
</DataTrigger>
</Style.Triggers>
</Style>
</tk:DataGrid.CellStyle>
....
</tk:DataGrid>