2017-03-16 26 views
1

모눈 선을 부모 모눈 너비에 맞추는 데 문제가 있습니다.WPF가 자동 크기 조정 열과 함께 격자 너비에 맞 춥니 다

<Grid Height="Auto" Margin="20" VerticalAlignment="Top" > 
    <Grid.RowDefinitions> 
     <RowDefinition /> 
    </Grid.RowDefinitions> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition Width="Auto" /> 
     <ColumnDefinition Width="Auto" /> 
     <ColumnDefinition Width="Auto" /> 
     <ColumnDefinition Width="Auto" /> 
     <ColumnDefinition Width="Auto" /> 
    </Grid.ColumnDefinitions> 

    <Label Grid.Column="0" Grid.Row="0" >Word</Label> 
    <Label Grid.Column="1" Grid.Row="0" >Class</Label> 
    <Label Grid.Column="2" Grid.Row="0" >Match case</Label> 
    <Label Grid.Column="3" Grid.Row="0" >Regular expression</Label> 
    <Label Grid.Column="4" Grid.Row="0" >Commands</Label> 
</Grid> 

문제는 다음과 같습니다 : 모든 열을 Width="Auto" 결과 행을하지 않습니다 적합 부모 그리드를 기반으로한다면 코드 (테이블 헤더)입니다. 나는이 중 하나에 Width="*"을 설정하여 문제를 해결할 수 있음을 알고 있지만 원하는 것은 아닙니다.

그리드 폭에 맞추어 모든 열에 자동 크기가 필요합니다 (행의 계산 된 자동 크기보다 훨씬 클 수 있습니다). 어떻게 보관할 수 있습니까?

답변

1

너비 = "자동"으로 설정하지 않으려면 Viewbox를 사용하십시오. 그리드에 적절하게 맞습니다.

<Viewbox Stretch="Uniform" VerticalAlignment="Top"> 
     <Grid Height="Auto" Margin="20"> 
      <Grid.RowDefinitions> 
       <RowDefinition /> 
      </Grid.RowDefinitions> 
       <Grid.ColumnDefinitions> 
       <ColumnDefinition Width="Auto" /> 
       <ColumnDefinition Width="Auto" /> 
       <ColumnDefinition Width="Auto" /> 
       <ColumnDefinition Width="Auto" /> 
       <ColumnDefinition Width="Auto" /> 
      </Grid.ColumnDefinitions> 

      <Label Grid.Column="0" Grid.Row="0" >Word</Label> 
      <Label Grid.Column="1" Grid.Row="0" >Class</Label> 
      <Label Grid.Column="2" Grid.Row="0" >Match case</Label> 
      <Label Grid.Column="3" Grid.Row="0" >Regular expression</Label> 
      <Label Grid.Column="4" Grid.Row="0" >Commands</Label> 
     </Grid> 
</Viewbox> 
+0

그러나 뷰 박스 대신 폭의 크기를 조정의 내용을 확장, 그것은 거대한 글꼴로 연결 크기가 최대화 될 때의 크기 –

+0

이 옵션의 가장 좋은 방법은 모든 ColumnDefinition에 대해 Width = "*"(별표)를 설정하는 것입니다. 즉, . 다른 옵션은 창 크기에 따라 레이블의 고정 폭을 설정해야한다는 것입니다. 창 크기에 따라 모든 레이블에 대해 너비를 똑같게 나눕니다. 하지만 이로 인해 화면 해상도가 달라질 수 있습니다. 모든 ColumnDefinition에 대해 Width = "*"를 설정하는 것이 좋습니다. width = "*"로 설정하면 모든 열의 공간을 균등하게 나눕니다. –

0

당신은 다른 Grid들에 속하는 여러 ColumnDefinition의 사이에 크기 조정 속성을 공유 할 수 SharedSizeGroup 속성을 사용할 수 있습니다 : https://msdn.microsoft.com/en-us/library/system.windows.controls.definitionbase.sharedsizegroup(v=vs.110).aspx

<Grid Height="Auto" Margin="20" VerticalAlignment="Top" > 
    <Grid.RowDefinitions> 
     <RowDefinition /> 
    </Grid.RowDefinitions> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition SharedSizeGroup="a" /> 
     <ColumnDefinition SharedSizeGroup="b" /> 
     <ColumnDefinition SharedSizeGroup="c" /> 
     <ColumnDefinition SharedSizeGroup="d" /> 
     <ColumnDefinition SharedSizeGroup="e" /> 
    </Grid.ColumnDefinitions> 

    <Label Grid.Column="0" Grid.Row="0" >Word</Label> 
    <Label Grid.Column="1" Grid.Row="0" >Class</Label> 
    <Label Grid.Column="2" Grid.Row="0" >Match case</Label> 
    <Label Grid.Column="3" Grid.Row="0" >Regular expression</Label> 
    <Label Grid.Column="4" Grid.Row="0" >Commands</Label> 
</Grid> 

<Grid> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition SharedSizeGroup="a" /> 
     <ColumnDefinition SharedSizeGroup="b" /> 
     <ColumnDefinition SharedSizeGroup="c" /> 
     <ColumnDefinition SharedSizeGroup="d" /> 
     <ColumnDefinition SharedSizeGroup="e" /> 
    </Grid.ColumnDefinitions> 
    <TextBlock Grid.Column="0" Grid.Row="0" TextWrapping="Wrap">Some long word.....</TextBlock> 
    <!-- --> 
</Grid> 
+0

하나의 Grid 요소가 있는데 왜 SharedSizeGroup을 사용해야합니까? "부모"란 행과 열을 포함하는 Grid 컨트롤을 의미합니다. –

+0

몇 개의 레이블이있는 그리드가 하나 있는데 정확히 무엇을하고 싶습니까? – mm8

+0

그 레이블이 Grid의 모든 너비에 맞기를 바란다. 왜냐하면 레이블은 그것의 왼쪽 부분 만 차지하고 거대한 공간은 비어있다. –