2014-11-06 4 views
1

나는 이것을 짐작할 수 없습니다. NET 4.5.1에 ​​gridsplitter가 있습니다. 새로운 wpf 응용 프로그램을 만든 다음 아래의 코드를 기본 창에 놓았습니다. 내가 무엇을 기대합니까 : 스플리터를 오른쪽으로 드래그하면 두 개의 열이있는 그리드에서 오른쪽의 열이 크기가 감소하고 왼쪽의 열이 커야합니다. 분할자를 왼쪽으로 드래그하면 왼쪽 열이 크기가 작아지고 오른쪽 열은 크기가 커야합니다. 내가보고있는 동작은입니다. 스플리터를 오른쪽으로 끌면 오른쪽의 열은 크기가 감소하고 왼쪽의 열은 크기가 감소합니다. 따라서 두 개의 텍스트 상자는 너비가 작아집니다. 스플리터를 왼쪽으로 드래그하면 스플리터가 그리드의 중심에서 멈추고 아무 것도 일어나지 않습니다. 나는 최소 너비 나 너비가 없습니다. 누구 하나 이것에 단서가 있습니까?.Net 4.5.1 GridSplitter는 열만 줄입니다.

<Grid> 

    <Grid.ColumnDefinitions> 
     <ColumnDefinition Width="*" SharedSizeGroup="A" /> 
     <ColumnDefinition Width="Auto" /> 
     <ColumnDefinition Width="*" SharedSizeGroup="A" /> 
    </Grid.ColumnDefinitions> 


    <TextBox Grid.Column="0" FontSize="55" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" TextWrapping="Wrap" Text="Hi" /> 
    <GridSplitter Grid.Column="1" Width="5" Background="Transparent" ResizeDirection="Columns" VerticalAlignment="Stretch" /> 

    <TextBox Grid.Column="2" FontSize="55" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" TextWrapping="Wrap" Text="there" /> 

</Grid> 
+0

여기에서 원하는 정확한 동작은 무엇입니까? 'GridSplitter'는 크기를 줄이거 나 늘릴 수 있습니다. 코드에서 현재 열과 세 번째 열 (다음 열)의 크기를 조정합니다. 그러나 첫 번째 열에는 세 번째 열과 동일한 '너비'가 있습니다 (둘 다'*'와 같습니다). 현재 열의 너비가 '0'이 될 때까지 격자를 왼쪽으로 끌면 당연히 거기에서 멈추고 왼쪽 열과 오른쪽 열은 전체 격자 너비의 '50 %'와 동일합니다. –

+0

나는 무엇이 일어나고 있는지 더 잘 설명하기 위해 질문을 편집했다. – dgxhubbard

+0

이 질문에 대한 답변을 추가했습니다. 문제를 쉽게 해결할 수 있습니다. –

답변

1

글쎄 지금 당신이 원하는 것을 이해합니다. GridSplitter에 대한 열 (중간 열)도 예약하는 방식을 따르고 있습니다. 이 방법을 수행하려면 이전과 크기를 조정하려면 크기 조정 동작을 설정 PreviousAndNextResizeBehavior을 지정할 필요가 훼손되지 않은 현재의 (중간) 열시키는 다음 열 : 또한

<GridSplitter Grid.Column="1" Width="5" Background="Transparent" 
       ResizeDirection="Columns" VerticalAlignment="Stretch" 
       ResizeBehavior="PreviousAndNext"/> 

당신이 필요하지 않습니다를 Width이 충분히 작고 포함하는 열의 Width을별로 신경 쓰지 않으면 GridSplitter에 대해 별도의 열을 지정하십시오. 두 열을 필요로한다는 것을 의미합니다. 첫 번째 열 또는 두 번째 열에 GridSplitter을 넣는 것은 별 문제가되지 않습니다. 그러나 두 번째 열에 넣을 때 HorizontalAlignmentLeft이어야합니다. 첫 번째 열에 넣을 때 HorizontalAlignmentRight이어야합니다 (기본값). 다음 코드는 GridSplitter을 두 번째 열에 넣습니다. TextBox가 TextBox의 위에 렌더링되도록하려면 모든 TextBox 뒤에 배치해야합니다. 그렇지 않으면 Panel.ZIndex을 명시 적으로 적절하게 설정해야합니다.

<Grid.ColumnDefinitions> 
    <ColumnDefinition Width="*" SharedSizeGroup="A" /> 
    <ColumnDefinition Width="*" SharedSizeGroup="A" /> 
</Grid.ColumnDefinitions> 


<TextBox Grid.Column="0" FontSize="55" HorizontalAlignment="Stretch" 
     VerticalAlignment="Stretch" TextWrapping="Wrap" Text="Hi" /> 
<TextBox Grid.Column="1" FontSize="55" HorizontalAlignment="Stretch" 
     VerticalAlignment="Stretch" TextWrapping="Wrap" Text="there"/> 
<GridSplitter Grid.Column="1" Width="5" Background="Transparent"  
       ResizeDirection="Columns" VerticalAlignment="Stretch" 
       HorizontalAlignment="Left"/> 
+1

감사합니다. – dgxhubbard

관련 문제