2011-10-04 24 views

Respuesta

23

objetivo un estilo común a todos los DataGridColumnHeaders:

<DataGrid.Resources> 
     <ContextMenu x:Key="DataGridColumnHeaderContextMenu" ...> 
     </ContextMenu> 

     <Style TargetType="{x:Type DataGridColumnHeader}"> 
      <Setter Property="ContextMenu" 
        Value="{StaticResource DataGridColumnHeaderContextMenu}" /> 
     </Style> 
    </DataGrid.Resources> 

Si Desea diferentes menús de contexto para diferentes encabezados de columna y luego usa activadores:

 <DataGrid.Resources> 
     <ContextMenu x:Key="ColumnHeaderContextMenu1" ...> 
     </ContextMenu> 

     <ContextMenu x:Key="ColumnHeaderContextMenu2" ...> 
     </ContextMenu> 

     <Style TargetType="{x:Type DataGridColumnHeader}"> 
      <Style.Triggers> 
       <Trigger Property="Content" Value="Column1"> 
        <Setter Property="ContextMenu" 
          Value="{StaticResource ColumnHeaderContextMenu1}" /> 
       </Trigger> 
       <Trigger Property="Content" Value="Column2"> 
        <Setter Property="ContextMenu" 
          Value="{StaticResource ColumnHeaderContextMenu2}" /> 
       </Trigger> 
      </Style.Triggers> 
     </Style> 
    </DataGrid.Resources> 

Hope t el sombrero ayuda.

+0

¿Qué tal si está generando las columnas dinámicamente? – MoonKnight

+0

En el caso de las columnas dinámicas, la segunda solución seguirá siendo verdadera, suponiendo que conocería los nombres de las columnas de antemano. –

0

Depende de cómo se está generando sus columnas, si se está definiendo en XAML entonces se podría hacer esto:

<DataGrid DataContext="{Binding MyDataContext}" ItemsSource="{Binding MyItems}" AutoGenerateColumns="False">   
    <DataGrid.Columns> 
     <DataGridTextColumn Binding="{Binding Path=Age}" Header="Age" > 
      <DataGridTextColumn.HeaderTemplate> 
       <DataTemplate> 
        <TextBlock Text="{TemplateBinding Content}" > 
         <TextBlock.ContextMenu> 
          <ContextMenu> 
           <MenuItem Header="Task _1" /> 
           <MenuItem Header="Task _2" /> 
           <MenuItem Header="Task _3" /> 
          </ContextMenu> 
         </TextBlock.ContextMenu> 
        </TextBlock> 
       </DataTemplate> 
      </DataGridTextColumn.HeaderTemplate> 
     </DataGridTextColumn> 
    </DataGrid.Columns> 
</DataGrid> 
Cuestiones relacionadas