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!

È stato utile?

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?

Date un'occhiata a questo esempio anche

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>
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top