質問

DatagridColumnヘッダーにツールチップを追加し、ソート機能を保持する方法はありますか。以下のコードは機能しません(ツールチップは表示されません)

<toolkit:DataGridTextColumn Header="Test" Width="70" Binding="{Binding TestText}" ToolTipService.ToolTip="{Binding TestText}">

そして、以下のコードを使用するとき

<toolkit:DataGridTemplateColumn Header="Test" Width="70">  
              <toolkit:DataGridTemplateColumn.CellTemplate>
                        <DataTemplate>
                            <TextBlock Text="{Binding TestText}" ToolTip="{Binding TestText}"  />
                        </DataTemplate>
                    </toolkit:DataGridTemplateColumn.CellTemplate>
                </toolkit:DataGridTemplateColumn>

列はソート機能を失います。

役に立ちましたか?

解決

グリッドが自動列を作成すると、その列にどのフィールドが表示されているかがわかります。列を自分で作成すると、データグリッドはその列に表示されるデータがわからないため、列をソートするフィールドを推測できません。列を作成するには、自分自身をソート可能に定義するには、 SortMemberPath あなたへの財産 DataGridTemplateColumn このような:

<DataGridTemplateColumn Header="Test" Width="70" SortMemberPath="TestText">
    ...
</DataGridTemplateColumn>

他のヒント

を取得します ToolTip に表示します DataGridColumnHeader あなたはバインドする必要があります ToolTip それのためのプロパティ ToolTip その DataGridColumn このような

<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>

ヘッダーではなく、列テンプレートにツールチップを追加します。

DatagridColumnのHeaderSyleプロパティを、HeaderCellのツールチップを含むテンプレートを含むスタイルに設定してみましたか?

この例もご覧ください

以前の回答はほとんど正しいですが、私はそれらを過度に複雑にするか、投稿の2つの懸念のうちの1つだけに対処していると思います。

まず、いつでも設定できます SortPath aの選別を維持するためのプロパティ DataGridTemplateColumn, 、または表示されるもの以外のプロパティでソートしたい場合。

第二に、あなたは必要ありません DataGridTemplateColumn OPのような列ヘッダーにツールチップを置くため。実際のセルにツールチップを追加する場合は、テンプレート列を使用する場合があります(ただし、これもおそらく必要ありません)。いずれにせよ、列ヘッダーにツールチップを追加することは、HeaderSyleによって最も簡単に実現されます

<DataGridTextColumn Header="Test" Binding="{Binding TestText}">
    <DataGridTextColumn.HeaderStyle>
        <Style TargetType="DataGridColumnHeader">
            <Setter Property="ToolTip" Value="Test ToolTip" />
        </Style>
    </DataGridTextColumn.HeaderStyle>
</DataGridTextColumn>
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top