WPF DataGridTextColumn Tooltip
-
27-10-2019 - |
Frage
Gibt es eine Möglichkeit, Tool -Tipp zum DataGridColumn -Header hinzuzufügen und dennoch die Sortierfunktionen beizubehalten? Der folgende Code funktioniert nicht (er zeigt den Tooltip nicht an)
<toolkit:DataGridTextColumn Header="Test" Width="70" Binding="{Binding TestText}" ToolTipService.ToolTip="{Binding TestText}">
Und wenn ich den Code unten verwende
<toolkit:DataGridTemplateColumn Header="Test" Width="70">
<toolkit:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding TestText}" ToolTip="{Binding TestText}" />
</DataTemplate>
</toolkit:DataGridTemplateColumn.CellTemplate>
</toolkit:DataGridTemplateColumn>
Die Spalte verliert Sortierfunktionalität.
Lösung
Wenn das Raster automatische Spalten erstellt, weiß es, welches Feld in dieser Spalte angezeigt wird. Wenn Sie die Spalte selbst erstellen, weiß das Datenraster nicht, welche Daten in dieser Spalte angezeigt werden, und kann daher nicht erraten, für welches Feld die Spalte sortiert werden soll. Um eine Spalte zu erstellen, definieren Sie sich sortierbar, fügen Sie das hinzu SortMemberPath
Eigenschaft zu Ihrem DataGridTemplateColumn
so was:
<DataGridTemplateColumn Header="Test" Width="70" SortMemberPath="TestText">
...
</DataGridTemplateColumn>
Andere Tipps
Um das zu bekommen ToolTip
in der anzeigen DataGridColumnHeader
Sie müssen die binden ToolTip
Eigentum dafür an die ToolTip
von seinem DataGridColumn
so was
<toolkit:DataGridTextColumn Header="Test"
Width="70"
Binding="{Binding TestText}"
ToolTipService.ToolTip="My Tooltip Text">
<toolkit:DataGridTextColumn.HeaderStyle>
<Style TargetType="toolkit:DataGridColumnHeader">
<Setter Property="ToolTip"
Value="{Binding RelativeSource={RelativeSource Self},
Path=Column.(ToolTipService.ToolTip)}"/>
</Style>
</toolkit:DataGridTextColumn.HeaderStyle>
</toolkit:DataGridTextColumn>
Sie fügen der Spaltenvorlage einen Tooltip hinzu, nicht zum Header.
Haben Sie versucht, die Headertyle -Eigenschaft in DataGridColumn auf einen Stil zu setzen, der eine Vorlage mit einem Tooltip für die Headercell enthält?
Frühere Antworten sind größtenteils korrekt, aber ich finde sie übermäßig kompliziert oder adressiert nur eines der beiden Bedenken des Beitrags.
Erstens können Sie das immer einstellen SortPath
Eigentum zur Aufrechterhaltung der Sortierung für a DataGridTemplateColumn
, oder möglicherweise, wenn Sie eine andere Eigenschaft als das, was angezeigt wird, sortieren möchten.
Zweitens brauchen Sie keine DataGridTemplateColumn
Um einen Tooltip auf dem Spaltenheader wie die OP -Erwähnungen zu haben. Sie können eine Template -Spalte verwenden, wenn Sie der tatsächlichen Zelle einen Tooltip hinzufügen möchten (aber dies wird wahrscheinlich auch nicht benötigt). In jedem Fall ist das Hinzufügen eines Tooltips zum Säulenheader am einfachsten durch das Headertyle zu erreichen
<DataGridTextColumn Header="Test" Binding="{Binding TestText}">
<DataGridTextColumn.HeaderStyle>
<Style TargetType="DataGridColumnHeader">
<Setter Property="ToolTip" Value="Test ToolTip" />
</Style>
</DataGridTextColumn.HeaderStyle>
</DataGridTextColumn>