2013-01-24 2 views
0

WPF 응용 프로그램을 개발 중입니다. 그 안에 나는 두 행을 가지고 Grid 있습니다. 한 행은 datagrid으로 구성되고 다른 행은 TextBlock의 일부로 구성되어 의 상세보기를 DataGrid에 표시합니다.상대적으로 증가 및 감소 그리드의 행 높이

<Grid> 
<Grid.RowDefinitions> 
         <RowDefinition Name="datagrid" Height="8*"></RowDefinition> 
         <RowDefinition Name="detailedview" Height="2*"></RowDefinition> 
</Grid.RowDefinitions> 

<my:DataGrid 
           Grid.Row="0" 
           x:Name="dataGrid1" 
           Width="auto" 
           HorizontalAlignment="Stretch" VerticalAlignment="Stretch" 
           AutoGenerateColumns="False" CanUserAddRows="True" Margin="0,0,0,0"> 

<Grid Grid.Row="2"> 
<!- Detailed View-> 
</Grid> 
</Grid> 

문제는, 데이터 격자의 ItemSource를 내 코드의 IEnumerable 컬렉션에 할당하려고합니다.

그리드의 행 크기는 데이터 그리드의 행 수와 정확히 일치해야합니다.

잔여 공간은 상세보기로 채워야합니다.

2 개 이상의 행이 추가 된 경우. DataGrid가있는 행의 높이가 정확히 2 행에 맞아야하고 세부보기의 크기가 상대적으로 감소해야하므로 확장해야합니다.

어떻게하면 8 * 및 2 *로 해독하지 않고도 달성 할 수 있습니까?

답변

2

DataGrid 행의 경우 Height를 Auto로 설정하고 Deatiled 행의 높이를 *로 설정합니다 (아래 그림 참조). 데이터 격자 표시하는 레코드가없는 경우에도 더 스크린 공간을 차지하도록

 <RowDefinition Name="datagrid" Height="Auto"></RowDefinition> 
     <RowDefinition Name="detailedview" Height="*"></RowDefinition> 

데이터 격자 행 높이 자동이므로

일부 값 데이터 격자의 중요 minHeight 속성을 설정. 나는 80

<my:DataGrid 
MinHeight="80" 
Grid.Row="0" 
x:Name="dataGrid1" 
Width="auto" 
HorizontalAlignment="Stretch" VerticalAlignment="Stretch" 
AutoGenerateColumns="False" CanUserAddRows="True" Margin="0,0,0,0"> 

에의 minHeight를 설정 한 아래 당신은 또한 데이터 그리드에 더 많은 행이있는 경우 완전히 수축되지 않도록하는 TextBlock에 최소 높이를 설정 할 수 있습니다.

+0

감사합니다. 아난드 ..... – BinaryMee

0

DataGrid를 ScrollViewer에 넣을 수 있습니다. 다음 마크 업 시도 :

<Grid> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="*"/> 
     <RowDefinition Height="40"/> 
    </Grid.RowDefinitions> 
     <ScrollViewer Grid.Row="0"> 
     <my:DataGrid ... /> 
    </ScrollViewer> 

    <TextBlock Height="40" Grid.Row="1" /> 

</Grid>