2011-12-07 71 views
12

私はカスタムテンプレートの列とヘッダーのスタイルとWPFのDataGrid(.NET 4)を持っていると列のサイズを調整できるようにしたいと思います:WPFのDataGrid列ヘッダーのサイズ変更

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

列ソートして再配置することはできますが、サイズを変更することはできません。グリッパは表示されません。私はthisの答えを見て、Thumbコントロールを見てきましたが、これは既に提供されている機能を再現するための大過剰なオーバーヒルのようです。 MSDNのブログ記事は、提供していないStaticResource - RowHeaderGripperStyleを参照しています。

答えて

18

私はいつもこのようにそれを行うと、それはかなりうまく動作します:

<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

それは確かに 'ListView' /' GridView'( 'Thumb'が死んでいる) –

+0

では動作しません。しかし、問題は、程度でしたDataGrid、ListViewではない – SOReader

+3

私は知っている、私はそれを疑うことではない、私はdownvoteしませんでした。これは、(私のように) 'ListView'の解決策を探して答えを見つけた人々のために残されたちょっとしたメモです。彼らが使用できるのは、ListViewのソースとしてhttp://geekswithblogs.net/lbugnion/archive/2008/05/06/wpf-listviewgridview-minimum-and-maximum-width-for-a-column.aspx –

関連する問題