2011-12-07 15 views
12

Ho un WPF DataGrid (NET 4) con colonne di modelli personalizzati e stili di intestazione e vorrebbe essere in grado di regolare le dimensioni delle colonne:WPF DataGrid Intestazione colonna ridimensionamento con stile personalizzato

<DataGridTemplateColumn.HeaderStyle> 
    <Style TargetType="DataGridColumnHeader"> 
     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="DataGridColumnHeader"> 
        <StackPanel Orientation="Horizontal"> 
         <Image Source="Images\monitor.png" Width="16" Height="16"/> 
         <TextBlock Text="Hostname" TextWrapping="Wrap" Padding="3"/> 
        </StackPanel> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 
</DataGridTemplateColumn.HeaderStyle> 

Colonne può ancora essere ordinato e riorganizzato ma non ridimensionato - la pinza non mostra. Ho visto la risposta this e ho guardato il controllo Thumb, tuttavia questo sembra un enorme overkill per riprodurre le funzionalità già fornite. Il post del blog MSDN fa riferimento a StaticResource - RowHeaderGripperStyle che non forniscono!

risposta

18

faccio sempre in questo modo e funziona piuttosto bene:

<Style TargetType="DataGridColumnHeader"> 
    <!-- here goes some setters --> 

    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="DataGridColumnHeader"> 
       <Grid Margin="{TemplateBinding Padding}"> 
        <Grid.ColumnDefinitions> 
         <ColumnDefinition Width="*" /> 
         <ColumnDefinition Width="Auto" /> 
        </Grid.ColumnDefinitions> 

        <!-- some stuff, like border etc. --> 

        <ContentPresenter /> 

        <Thumb x:Name="PART_RightHeaderGripper" Grid.Column="1" 
         HorizontalAlignment="Right" 
         Width="2" BorderThickness="1" 
         BorderBrush="{Binding VerticalGridLinesBrush, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type DataGrid}}}" 
         Cursor="SizeWE"/> 
       </Grid> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 
+0

Certamente non funziona in un 'ListView' /' GridView' ('Thumb' è morto) –

+0

Ma la domanda circa era DataGrid, non un ListView – SOReader

+3

Lo so, non mi sto interrogando, non ho fatto downvot. È solo una nota a margine per chi incontra la tua risposta alla ricerca di una soluzione per 'ListView' (come se fossi). Quello che possono usare è http://geekswithblogs.net/lbugnion/archive/2008/05/06/wpf-listviewgridview-minimum-and-maximum-width-for-a-column.aspx –

Problemi correlati