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.

War es hilfreich?

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?

Schauen Sie sich dieses Beispiel auch an

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>
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top