2013-03-27 1 views
1

WPF Toolkit release February 2010 (.net framework 3.5)에서 DataGrid 컨트롤을 사용하고 있고 테이블 셀에 텍스트 줄 바꿈을 설정 한 후 DataGrid가 마지막 행 다음에 여유 공간이 많이있는 것으로 나타났습니다.WPF Toolkit 잘못된 DataGrid 높이

여유 공간의 양은 행 수에 비례하는 것으로 보입니다 (그러나 항상 그런 것은 아닙니다).

행 중 하나를 수동으로 삭제하면 DataGrid가 올바르게 표시되고 여유 공간이 제거됩니다. 그러나로드 타임에 코드의 행을 삭제하면 아무 효과가 없으며 여유 공간이 계속 표시됩니다. 내 생각 엔 트릭은 DataGrid가 렌더링 된 후에 만 ​​작동한다는 것입니다. 셀 내용을 편집해도 크기 조정이 트리거되지 않습니다.

Data Grid

참고 :

  1. 은 내가 데이터 그리드에 대한 MaxHeight입니다을 설정하려고하지만 잘 때문에 텍스트 배치 작동하지 않습니다.

  2. DataGrid의 Size MeasureOverride(Size availableSize) 메서드를 덮어 썼습니다. 메서드가 여러 번 호출되고 처음에는 크기가 적당하고 1 ~ 2 회 더 호출하면 증가하는 것을 알았습니다. 또한 availableSize에는 무한한 높이가 있습니다.

DataGrid의 높이를 어떻게 고정시킬 수 있습니까?

는 편집 :

나는 경우 내 문제를 보여주기 위해 작은 데모를 만들었습니다. 이 프로젝트는 WPFToolkit에 대한 참조가 필요합니다.

MainWindow.xaml

MainWindow.xaml.cs

공지 제 1 및 제 2 데이터 격자

.

답변

1

DataGridCellsPanelDataGrid의 잘못된 높이를 계산 한 것으로 보입니다.

DataGridCellsPanelStackPanel으로 바꾸면 DataGrid은 높이의 올바른 값을 계산하므로 더 이상 공간을 낭비하지 않습니다. XAML에서

솔루션 : 뒤에 코드에 대한

<wpf:DataGrid ItemsSource="{Binding DataGridDS, ElementName=mainWindow}" 
       VirtualizingStackPanel.IsVirtualizing="False"> 
    <wpf:DataGrid.ItemsPanel> 
     <ItemsPanelTemplate> 
      <StackPanel /> 
     </ItemsPanelTemplate> 
    </wpf:DataGrid.ItemsPanel> 
    <wpf:DataGrid.Columns> 
     <wpf:DataGridTextColumn Binding="{Binding Col1}" Width="*" /> 
     <wpf:DataGridTextColumn Binding="{Binding Col2}" Width="100" /> 
     <wpf:DataGridTextColumn Binding="{Binding Col3}" Width="100" /> 
    </wpf:DataGrid.Columns> 
</wpf:DataGrid> 

솔루션, 나는 데이터 그리드에서 확장하는 사용자 정의 컨트롤을 생성하고, 생성자에 다음 코드가 있습니다

 var stackPanelFactory = new FrameworkElementFactory(typeof(StackPanel)); 
     var template = new ItemsPanelTemplate(stackPanelFactory); 
     this.ItemsPanel = template; 
0

VerticalContentAlignment 및 VerticalAlignment를 Top으로 설정 했습니까?

이전에이 문제가 있었음을 기억하지만 필수 수정 사항인지 잘 모르겠습니다.

+0

예를, 나는 그것을 시도 않았다 , 그러나 그것은 작동하지 않았다.실제로 가서 계층 구조의 모든 항목에 대해 VerticalContentAlignment 및 VerticalAlignment를 Top으로 설정했습니다. –