2011-01-06 12 views

risposta

3

Questa operazione può essere eseguita utilizzando DataGridTextColumn & DataGridTextColumn.HeaderStyle. Nel tag headerstyle, utilizzare ToolTipService e associare il contenuto ai valori dinamici generati. Ecco un codice di esempio per questo ...

 <data:DataGrid.Columns> 
      <data:DataGridTextColumn Header="First Name" Binding="{Binding FName}" > 
       <data:DataGridTextColumn.HeaderStyle> 
        <Style TargetType="dataprimitives:DataGridColumnHeader"> 
         <Setter Property="ContentTemplate"> 
          <Setter.Value> 
           <DataTemplate> 
            <ContentControl Content="{Binding}"> 
             <ToolTipService.ToolTip> 
              <ToolTip Content="Tooltip First" /> 
             </ToolTipService.ToolTip> 
            </ContentControl> 
           </DataTemplate> 
          </Setter.Value> 
         </Setter> 
        </Style> 
       </data:DataGridTextColumn.HeaderStyle> 
      </data:DataGridTextColumn> 

      <data:DataGridTextColumn Header="Last Name" Binding="{Binding LName}"> 
       <data:DataGridTextColumn.HeaderStyle> 
        <Style TargetType="dataprimitives:DataGridColumnHeader"> 
         <Setter Property="ContentTemplate"> 
          <Setter.Value> 
           <DataTemplate> 
            <ContentControl Content="{Binding}"> 
             <ToolTipService.ToolTip> 
              <ToolTip Content="Tooltip Second"></ToolTip> 
             </ToolTipService.ToolTip> 
            </ContentControl> 
           </DataTemplate> 
          </Setter.Value> 
         </Setter> 
        </Style> 
       </data:DataGridTextColumn.HeaderStyle> 
      </data:DataGridTextColumn> 

      <data:DataGridTextColumn Header="City" Binding="{Binding City}"> 
       <data:DataGridTextColumn.HeaderStyle> 
        <Style TargetType="dataprimitives:DataGridColumnHeader"> 
         <Setter Property="ContentTemplate"> 
          <Setter.Value> 
           <DataTemplate> 
            <ContentControl Content="{Binding}"> 
             <ToolTipService.ToolTip> 
              <ToolTip Content="Tooltip Third"></ToolTip> 
             </ToolTipService.ToolTip> 
            </ContentControl> 
           </DataTemplate> 
          </Setter.Value> 
         </Setter> 
        </Style> 
       </data:DataGridTextColumn.HeaderStyle> 
      </data:DataGridTextColumn> 
     </data:DataGrid.Columns> 

    </data:DataGrid> 

</Grid> 

dove Custdetails .. è qualcosa di simile ..

class Customer 
{ 
    public string LName { set; get; } 
    public string FName { set; get; } 
    public string City { set; get; } 
} 

DataBinding ...

List<Customer> customers = new List<Customer> 
            { 
             new Customer { LName="Alan", FName="Ameen", City="New York" }, 
             new Customer { LName="Forgeard", FName="Steven", City="Mumbai" }, 
             new Customer { LName="Angur", FName="Paul", City="São Paulo" } 
            }; 
dgCustDetails.ItemsSource = customers; 

Questo visualizzerebbe i tooltips dell'header ... Per renderlo dinamico .. Sostituisci il Contenuto ToolTip con Bindin g & il valore desiderato ...

21

Questo può essere fatto ancora più semplice rispetto a @ risposta di Farukh:

<data:DataGridTextColumn.HeaderStyle> 
    <Style TargetType="DataGridColumnHeader"> 
    <Setter Property="ToolTipService.ToolTipProperty" 
      Value="Your tool tip here" /> 
    </Style> 
</data:DataGridTextColumn.HeaderStyle> 

Oppure, se avete bisogno di farlo in codice:

var style = new Style(typeof(DataGridColumnHeader)); 
style.Setters.Add(new Setter(ToolTipService.ToolTipProperty, 
          "Your tool tip here")); 
column.HeaderStyle = style; 
+0

Questo mi ha aiutato, ma sembra sovrascrivere lo stile esistente per le intestazioni di colonna. Come posso ottenere lo stile predefinito per un oggetto DataGridColumnHeader e impostare il mio stile su di esso? – Marlon

+0

In realtà, ho già alcune definizioni di intestazione nel modello DataGrid, quando applico lo stile sull'intestazione sembra che ignori tutte le proprietà di stile definite dalla griglia. – Marlon

+0

Hai provato a impostare la proprietà BasedOn dello stile sul tuo stile personalizzato? Per esempio. '