2011-02-05 3 views
0

더 많은 데이터를 가지고 더 높아진 DataGrid을 기반으로 두 개의 동일한 높이를 가질 수 있기를 바랍니다. 다른 말로하면 데이터 입력에 관계없이 두 개의 높이를 같게 두는 것이 좋습니다. 하나의 열과 소수의 열이 있습니다. 하나는 DataGrid이고 다른 하나는 DataGrid입니다. 이 경우 DataGrid 중 하나가 입력되면 더 크게 확장됩니다. 다른 DataGrid의 키가 같아야하고 아래 빈 공간이 필요합니다. 내가 어떻게 작동하게 할 수 있는지 궁금하다. DataGrid은 높이가 DataGrid 인 경우 자동으로 확장되어야합니다. 어떤 아이디어든지 높게 평가됩니다!다른 높이의 높이를 기준으로 DataGrid의 높이를 확장하는 방법은 무엇입니까?

<Window 
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
x:Class="DataGridExpand.MainWindow" 
x:Name="Window" 
Title="MainWindow" 
Width="640" Height="480"> 

<Window.Resources> 
    <XmlDataProvider x:Key="Info" XPath="Info/Values"> 
      <x:XData> 
      <Info xmlns=""> 
       <Values Name="Value1" /> 
       <Values Name="Value2" /> 
       <Values Name="Value3" /> 
       <Values Name="Value4" /> 
       <Values Name="Value5" /> 
       <Values Name="Value6" /> 
       <Values Name="Value7" /> 
       <Values Name="Value8" /> 
       <Values Name="Value9" /> 
      </Info> 
      </x:XData> 
    </XmlDataProvider> 
    <XmlDataProvider x:Key="Info2" XPath="Info2/Values2"> 
      <x:XData> 
      <Info2 xmlns=""> 
       <Values2 Name="Value1" /> 
       <Values2 Name="Value2" /> 
       <Values2 Name="Value3" /> 
       <Values2 Name="Value4" /> 
       <Values2 Name="Value5" /> 
      </Info2> 
      </x:XData> 
    </XmlDataProvider> 
</Window.Resources> 

<Grid x:Name="LayoutRoot" Margin="10" > 
    <Grid.RowDefinitions> 
     <RowDefinition Height="Auto" /> 
    </Grid.RowDefinitions> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition Width="49*" /> 
     <ColumnDefinition Width="20" /> 
     <ColumnDefinition Width="49*" /> 
    </Grid.ColumnDefinitions> 
    <Border Padding="10" BorderBrush="Black" Background="#FFD2D2D2"> 
     <DataGrid x:Name="Main" GridLinesVisibility="Horizontal" AutoGenerateColumns="False" 
      ItemsSource="{Binding XPath=/Info2/Values2}" 
      DataContext="{Binding Source={StaticResource Info2}}" Margin="10"> 
      <DataGrid.Columns> 
       <DataGridTextColumn Binding="{Binding [email protected]}" Foreground="#FF6E6E6E" Width="160" /> 
      </DataGrid.Columns> 
     </DataGrid> 
    </Border> 
    <GridSplitter x:Name="GridSplitter" ResizeBehavior="PreviousAndNext" HorizontalAlignment="Stretch" Grid.Column="1" /> 
    <Border Grid.Column="2" Padding="10" BorderBrush="Black" Background="#FFD2D2D2"> 
     <DataGrid x:Name="Main1" GridLinesVisibility="Horizontal" AutoGenerateColumns="False" Margin="10" 
      ItemsSource="{Binding XPath=/Info/Values}" 
      DataContext="{Binding Source={StaticResource Info}}"> 
      <DataGrid.Columns> 
       <DataGridTextColumn Binding="{Binding [email protected]}" Foreground="#FF6E6E6E" Width="160" /> 
      </DataGrid.Columns> 
     </DataGrid> 
    </Border> 
</Grid> 

답변

1

같은? MinimumHeight이 하나 인 DataGrid을 다른 하나의 ActualHeight으로 설정하거나 그 반대로 설정하십시오. 이것은 트릭을 할 수 있습니다 :

<DataGrid x:Name="Main" 
    MinHeight="{Binding ElementName=Main1,Path=ActualHeight}" 
    ... 

<DataGrid x:Name="Main1" GridLinesVisibility="Horizontal" AutoGenerateColumns="False" 
    MinHeight="{Binding ElementName=Main,Path=ActualHeight}" 
    ... 
+0

내 스레드를 찾아 주셔서 감사합니다. 나는 그 문제를 다른 방식으로 해결했다. 나는 자동으로 높이를 늘릴 수있는 datagrinds를 포함하는 그리드의 레이아웃을 변경했습니다. Datagrid는 기본적으로이 작업을 수행 할 수 있습니다. 다시 감사합니다. – vladc77

3

당신은, 한 행 각을 가진 Grid에 모두 DataGrids을 넣어 그들에게 동기를 가지고 SharedSizeGroup를 사용할 수 있습니다

다음은 샘플 XAML입니다. 두 격자의 부모에 대해 Grid.IsSharedSizeScope을 설정하십시오.

난 당신이 바로, 당신은 정확히 같은 높이가 양쪽 DataGrid의를 가질 필요가 이해한다면이

<Grid x:Name="LayoutRoot" Margin="10" Grid.IsSharedSizeScope="True"> 
    ... 
    <Grid> 
     <Grid.RowDefinitions> 
      <RowDefinition SharedSizeGroup="A"/> 
     </Grid.RowDefinitions> 
     ... 
     <DataGrid .../> <!-- DataGrid 1 --> 
    </Grid> 
    <Grid> 
     <Grid.RowDefinitions> 
      <RowDefinition SharedSizeGroup="A"/> 
     </Grid.RowDefinitions> 
     ... 
     <DataGrid .../> <!-- DataGrid 2 --> 
    </Grid> 
    ... 
</Grid> 
+0

당신을 도와주세요. 제 경우에는 그리드를 하나만 가질 수 있습니다. 이 기술을 구현할 수없는 것 같습니다. 어떤 아이디어? – vladc77

+0

DataGrid 위에 다른 행의 요소가있을 수 있으므로 DataGrid 높이가 필요합니다. 결과적으로 다른 컬럼에 더 큰 DataGrid가 있으면 다른 DataGrid만큼 크지 않으므로 DataGrid를 행의 맨 아래로 확장해야합니다. 두 datgrid는 모두 같은 높이입니다. – vladc77

+0

나는 당신이 의미하는 것을 시각화 할 수 없다. 다이어그램이 도움이 될 것이다. 또한 공유 크기 표에서 특정 요소를 포함/제외함으로써 거의 모든 설정을 처리 할 수 ​​없습니까? –

관련 문제