2009-11-14 15 views
10

ho provato la seguente:Impossibile impostare tooltip di DataGridColumn

<tk:DataGridTextColumn 
    Header="Item" 
    Binding="{Binding Item.Title}" 
    ToolTipService.ToolTip="{Binding Item.Description}" /> 

E non vedo alcuna punta dell'utensile.

Qualche idea? È addirittura implementato?

risposta

24

questo funziona per me:

<Style TargetType="{x:Type Custom:DataGridColumnHeader}"> 
    <Style.Triggers> 
     <Trigger Property="IsMouseOver" Value="True"> 
      <Setter Property="ToolTip" Value="{Binding Column.(ToolTipService.ToolTip), RelativeSource={RelativeSource Self}}"/> 
     </Trigger> 
    </Style.Triggers> 
</Style> 
+0

Brilliant! Questo piccolo Style rende ora le descrizioni dei comandi appaiono, senza fare in giro con dover cambiare DataGridColumnHeaders in DataGridTextColumns o altro. Esattamente quello che stavo cercando! –

+0

Hey mi puoi dire come si aggiunge lo stile sopra per DataGridComboBoxColumn – Abhi

7

pls, controllare se il codice qui sotto dovrebbe funzionare per voi, si dovrebbe visualizzare i suggerimenti per le colonne intestazioni e celle, tooltip di cella dovrebbe essere piegato campo Descrizione dell'oggetto dati:

<DataGridTextColumn Width="SizeToCells" 
        MinWidth="150" 
        Binding="{Binding Name}"> 

    <DataGridTextColumn.Header> 
     <TextBlock Text="Name" ToolTipService.ToolTip="Header ToolTip" /> 
    </DataGridTextColumn.Header> 

    <DataGridTextColumn.ElementStyle> 
     <Style TargetType="{x:Type TextBlock}"> 
      <Setter Property="ToolTip" Value="{Binding Description}" /> 
      <Setter Property="TextWrapping" Value="Wrap" /> 
     </Style> 
    </DataGridTextColumn.ElementStyle> 
</DataGridTextColumn> 

soluzione trovata qui : 5 Random Gotchas with the WPF DataGrid

4

DataGridTextColumn non è visibile. Devi impostare i suggerimenti sull'intestazione o sul contenuto.

Per impostare una descrizione comandi sul titolo, modificare l'intestazione di un TextBlock:

<tk:DataGridTextColumn 
    Binding="{Binding Item.Title}"> 
    <tk:DataGridTextColumn.Header> 
    <TextBlock 
     Text="Text" 
     ToolTipService.ToolTip="Tooltip for header" /> 
    </tk:DataGridTextColumn.Header> 
</tk:DataGridTextColumn> 

Per impostare una descrizione comandi sui contenuti delle colonne, impostare nella Stile:

<tk:DataGridTextColumn 
    Binding="{Binding Item.Title}" 
    Heading="Text"> 
    <tk:DataGridTextColumn.ElementStyle> 
    <Style> 
     <Setter Property="ToolTipService.ToolTip" Value="{Binding Item.Description}" /> 
    </Style> 
    </tk:DataGridTextColumn.ElementStyle> 
</tk:DataGridTextColumn> 

Si può Voglio anche impostare EditingElementStyle.

0

Set ToolTipService.ToolTip proprietà in Intestazione stile:

<Setter Property="ToolTipService.ToolTip" Value="{x:Static res:StringResources.List_Dialog_SelectAll_Checkbox}"/> 

Ecco come ho usato quando ho avuto un'immagine in DataGridCheckBoxColumn al posto del testo. XAML:

<Window x:Class="MyProject.GUI.ListDialog" 
      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
      xmlns:viewModel="clr-MyProject.GUI.ViewModels" 
      Title="{Binding Title}" Height="350" Width="650" 
      MinHeight="350" MinWidth="650" 
      xmlns:res="clr-MyProject.GUI.Resources" Closing="Window_Closing" WindowStyle="ToolWindow"> 
    <Window.Resources> 
      <BitmapImage x:Key="MyImageSource" UriSource="Resources/Images/SelectDeselect.png" /> 
      <Style x:Key="CheckBoxHeader" TargetType="DataGridColumnHeader"> 
       <Setter Property="HorizontalContentAlignment" Value="Center"/> 
       <Setter Property="VerticalContentAlignment" Value="Center"/> 
          <Setter Property="ToolTipService.ToolTip" Value="{x:Static res:StringResources.List_Dialog_SelectAll_Checkbox}"/> 
       <Setter Property="ContentTemplate"> 
        <Setter.Value> 
         <DataTemplate> 
          <Image Width="15" Height="15" Source="{StaticResource MyImageSource}" /> 
         </DataTemplate> 
        </Setter.Value> 
       </Setter> 
      </Style> 
    </Window.Resources> 

C#:

DataGridCheckBoxColumn checkColumn = new DataGridCheckBoxColumn(); 
checkColumn.HeaderStyle = new System.Windows.Style(); 
checkColumn.CanUserSort = checkColumn.CanUserResize = false; 
checkColumn.Width = new DataGridLength(25); 
checkColumn.HeaderStyle = (Style)Resources["CheckBoxHeader"]; 
checkColumn.CellStyle = (Style)Resources["CenterAlignedCellStyle"]; 
checkColumn.IsReadOnly = false; 
dataGrid.Columns.Add(checkColumn); 
1

Inoltre, se la vostra colonna è un DataGridTemplateColumn invece di un DataGridTextColumn, si può fare in questo modo:

<DataGridTemplateColumn x:Name="MyCheckBoxColumn" CellStyle="{StaticResource MyCellStyle}" > 
    <DataGridTemplateColumn.HeaderTemplate> 
     <DataTemplate> 
      <TextBlock Text="MyHeaderName" ToolTip="This is my column description" /> 
     </DataTemplate> 
    </DataGridTemplateColumn.HeaderTemplate> 
    <DataGridTemplateColumn.CellTemplate> 
     <DataTemplate> 
      <CheckBox ... /> 
     </DataTemplate> 
    </DataGridTemplateColumn.CellTemplate> 
</DataGridTemplateColumn>