2011-01-28 216 views
4

有沒有辦法將工具提示添加到DataGridColumn標題並仍保留排序功能。下面的代碼不工作(它不顯示工具提示)WPF DataGridTextColumn工具提示

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

代碼列失去排序functionality..Help!

+0

你要當鼠標懸停在列標題或工具提示出現時,它懸停在數據項在體內的網格? – 2011-01-28 23:42:44

+0

可能的重複[如何添加一個工具提示到DataGridTextColumn](http://stackoverflow.com/questions/1164288/how-do-i-add-a-tooltip-to-a-datagridtextcolumn) – Jay 2015-12-16 01:37:05

回答

4

當電網創建自動柱,它知道哪些場正被顯示在該列中。當您自己創建列時,數據網格不知道您將在該列中顯示哪些數據,因此無法猜測按列排序哪個字段。 爲了讓你自己定義排序的列時,SortMemberPath屬性添加到您的DataGridTemplateColumn這樣的:

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

您正在向列模板添加工具提示,而不是添加到標題。

您是否嘗試過將DataGridColumn的HeaderStyle屬性設置爲包含HeaderCell工具提示模板的樣式?

Have a look at this example too

+0

我更新了我的題。我希望工具提示顯示列中標題下的所有記錄。不知何故上述代碼不起作用.. – developer 2011-01-28 22:42:36

+0

@developer:你看我的答案中的例子嗎?我仍然不明白你想要的效果是什麼。從您的問題:「添加工具提示到DataGridColumn標題」 – 2011-01-29 07:24:18

7

爲了讓ToolTipDataGridColumnHeader顯示你需要的ToolTip屬性綁定爲它的ToolTipDataGridColumn這樣

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

以前的答案大多是正確的,但是我覺得他們過於複雜,或者只解決一職的兩個問題之一。首先,您總是可以設置SortPath屬性來維護對DataGridTemplateColumn的排序,或者可能在您想對除顯示內容之外的某個屬性進行排序時,您可以始終設置SortPath屬性。

其次,您不需要DataGridTemplateColumn以在列標題上有一個工具提示,就像操作提及的那樣。如果您想向實際單元格添加工具提示,則可以使用模板列(但這可能也不需要)。在任何情況下,添加一個工具提示欄標題是最容易被HeaderStyle完成

<DataGridTextColumn Header="Test" Binding="{Binding TestText}"> 
    <DataGridTextColumn.HeaderStyle> 
     <Style TargetType="DataGridColumnHeader"> 
      <Setter Property="ToolTip" Value="Test ToolTip" /> 
     </Style> 
    </DataGridTextColumn.HeaderStyle> 
</DataGridTextColumn>