WPF DataGridTextColumn Tooltip
-
27-10-2019 - |
Domanda
C'è un modo per aggiungere punta strumento per intestazione DataGridColumn e mantenere la funzionalità di ordinamento. Il sotto il codice non funziona (Esso non visualizzare il tooltip)
<toolkit:DataGridTextColumn Header="Test" Width="70" Binding="{Binding TestText}" ToolTipService.ToolTip="{Binding TestText}">
E quando uso il codice seguente
<toolkit:DataGridTemplateColumn Header="Test" Width="70">
<toolkit:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding TestText}" ToolTip="{Binding TestText}" />
</DataTemplate>
</toolkit:DataGridTemplateColumn.CellTemplate>
</toolkit:DataGridTemplateColumn>
La colonna perde l'ordinamento functionality..Help!
Soluzione
Quando la griglia crea colonne automatiche, sa quale campo viene visualizzato in quella colonna. Quando si crea la colonna da soli, la griglia di dati non sa quali dati sarete visualizzando in quella colonna e quindi non può indovinare quale campo per ordinare la colonna.
Per fare una colonna ti definisci ordinabili, aggiungere la proprietà SortMemberPath
al DataGridTemplateColumn
in questo modo:
<DataGridTemplateColumn Header="Test" Width="70" SortMemberPath="TestText">
...
</DataGridTemplateColumn>
Altri suggerimenti
Per ottenere ToolTip
da visualizzare nel DataGridColumnHeader
è necessario associare la proprietà ToolTip
per esso al ToolTip
della sua DataGridColumn
come questo
<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>
si aggiunge un tooltip al modello di colonna, non l'intestazione.
Hai provato impostando la proprietà HeaderStyle su DataGridColumn ad uno stile che contiene un modello tra cui un suggerimento per il HeaderCell?
le risposte precedenti sono quasi sempre corrette, tuttavia li trovo troppo complicato o affrontare uno solo dei due preoccupazioni del post.
In primo luogo, si può sempre impostare la proprietà SortPath
di mantenere l'ordinamento di un DataGridTemplateColumn
, o forse quando si desidera ordinare su qualche altro bene diverso da quello che viene visualizzato.
In secondo luogo, non c'è bisogno di un DataGridTemplateColumn
al fine di avere una descrizione comandi sul titolo della colonna come il PO menziona. Si potrebbe utilizzare una colonna modello se si desidera aggiungere una descrizione comando alla cella attuale (ma questo probabilmente non è necessario neanche). In ogni caso, l'aggiunta di una descrizione comandi all'intestazione di colonna è più facilmente realizzabile dal HeaderStyle
<DataGridTextColumn Header="Test" Binding="{Binding TestText}">
<DataGridTextColumn.HeaderStyle>
<Style TargetType="DataGridColumnHeader">
<Setter Property="ToolTip" Value="Test ToolTip" />
</Style>
</DataGridTextColumn.HeaderStyle>
</DataGridTextColumn>