2012-03-06 5 views

답변

1

이 시도하십시오

XAML : 뒤에

<tk:DataGrid x:Name="MyDataGrid" 
       RowHeaderWidth="15" 
       ItemsSource="{StaticResource MyData}" 
       AutoGenerateColumns="False"> 
     <tk:DataGrid.Columns> 
      <tk:DataGridTextColumn Binding="{Binding ID}"> 
       <tk:DataGridTextColumn.HeaderTemplate> 
        <DataTemplate> 
         <DockPanel> 
          <GridSplitter 
           DockPanel.Dock="Left" 
           VerticalAlignment="Stretch" 
           HorizontalAlignment="Left" Width="2" 
           DragDelta="GridSplitter_DragDelta"/> 
          <TextBlock Text="ID" DockPanel.Dock="Right"/> 
         </DockPanel> 
        </DataTemplate> 
       </tk:DataGridTextColumn.HeaderTemplate> 
      </tk:DataGridTextColumn> 
      <tk:DataGridTextColumn Header="Name" 
            Binding="{Binding Name}"> 
      </tk:DataGridTextColumn> 
     </tk:DataGrid.Columns> 
    </tk:DataGrid> 

코드 :

 private void GridSplitter_DragDelta 
     (object sender, 
     System.Windows.Controls.Primitives.DragDeltaEventArgs e) 
    { 
     if (MyDataGrid.RowHeaderWidth + e.HorizontalChange >= 15) 
     { 
      MyDataGrid.RowHeaderWidth = MyDataGrid.RowHeaderWidth + e.HorizontalChange; 
     } 
    } 

당신은 RowHeaderTemplate을 무시하고 오른쪽에 도킹이 정확한 그리드 분할을 할 수 있습니다. 하지만 나를 위해 첫 번째 열 머리글 왼쪽에 도킹 최선을 다했습니다!

0
   <GridViewColumn Header="Name" Width="150"> 
        <GridViewColumn.CellTemplate> 
         <DataTemplate> 
          <TextBlock Width="Auto" TextTrimming="CharacterEllipsis"/> 
         </DataTemplate> 
        </GridViewColumn.CellTemplate> 
       </GridViewColumn> 

...이

+0

'GridViewColumn'은 특정 ListView이며 WPF DataGrid와는 관련이 없습니다. –