2010-05-14 6 views
6

런타임에 TextBox 컨트롤의 크기를 WPF로 드래그하여 사용자가 텍스트 상자 컨트롤의 크기를 조정할 수 있는지 궁금합니다. 덜 중요하게도 모든 컨트롤의 크기를 조정하는 데 사용되는 동일한 기술이 사용됩니까? WPF의 런타임에서 TextBox 크기 조정

당신을 :) 감사

+0

중복 : http://stackoverflow.com/questions/771275/resizing-a-control-in-wpf – Heinzi

+2

이 링크는 아무 것도 표시되지 않으므로 중복해서 표시해서는 안됩니다. –

답변

6

당신은 텍스트 상자의 정렬이 스트레칭 설정하고 gridsplitters과 그리드처럼, 당신은 크기를 조정할 수있는 컨테이너 내부에 그것을 배치 (또는 크기 조절이 창에) 시도해야합니다. 맞춤 크기 조정이 가능한 텍스트 상자를 만드는 것보다 훨씬 쉽습니다. 나머지 레이아웃에서도 효과가 있습니다.

편집 : 여기에 실제 응용 프로그램에서 예입니다 :

<Grid>... 
<GridSplitter Grid.Row="1" Grid.ColumnSpan="2" ResizeDirection="Rows" HorizontalAlignment="Stretch" VerticalAlignment="Bottom" Height="4" BorderThickness="0,0,0,1" BorderBrush="Gray" Background="Transparent"/> 
<TextBox Grid.Row="2" Grid.Column="0" Margin="6,6,6,6" Name="RequestTextBox" VerticalScrollBarVisibility="Auto" TextWrapping="Wrap" Text="{Binding Request, Mode=TwoWay}"/> 
<GridSplitter Grid.Row="2" Grid.ColumnSpan="2" ResizeDirection="Rows" HorizontalAlignment="Stretch" VerticalAlignment="Bottom" Height="4" BorderThickness="0,0,0,1" BorderBrush="Gray" Background="Transparent"/> 
...</Grid> 
+0

이것이 귀하의 경우에 완벽하지 않을 수도 있지만 귀하가 고려해야 할 가장 먼저해야 할 일입니다. –

+0

흥미 롭다, 나는 지금 그걸 시도하고있다! :-) +1 –

6

tehMick의 대답은 절대적으로 올바른 : 당신은 확실히 크기 조정보다는 텍스트 상자 자체를 사용자 정의 할 수있는 컨테이너를 작성해야합니다. 그리고 그것이 당신을 위해 작동한다면 GridSplitter은 매우 좋은 in-the-box 솔루션입니다.

동일한 상황 이었지만 GridSplitter가 작동하지 않으므로 네 모퉁이에서 마우스 끌기를 처리하여 크기가 두 줄로 조정되거나 가운데가 한 줄로 조정되는 "ResizeBorder"컨트롤을 만들었습니다. 이것은 실제로 매우 간단한 코드입니다. MouseDown을 처리하고 MouseDown 위치와 측면/모서리를 끌고있는 지역 변수를 설정 한 다음 MouseMove에서 크기를 업데이트합니다.

내 ResizeBorder는 스타일이 가능하여 양쪽에있는 모서리와 선에 4 개의 상자 만 표시 할 수 있었고, 꿈꾸던 것보다 더 복잡한 것도있었습니다.

<my:ResizeBorder ...> 
    <TextBox ... /> 
</my:ResizeBorder> 

또는 순위 :

또한, 당신은 그리드 및 GridSplitters 또는 ResizeBorder 또는 무엇을 사용하고 있는지,이 같은 컨트롤 주위에 당신의 크기 조정 기능 중 하나 퍼팅의 선택의 여지가 있습니다 텍스트 상자 자체의의 ControlTemplate을 업데이트 :이 후자의 방법의

<ControlTemplate x:Key="ResizableTextBox" TargetType="{x:Type TextBox}"> 
    <my:ResizeBorder> 
    ... 
    </my:ResizeBorder> 
</ControlTemplate> 

... 

<TextBox Template="{StaticResource ResizableTextBoxTemplate}" ... /> 

장점은 수도가 텍스트 상자 크기를 조정할 수 있도록 스타일 또는 연결된 속성을 사용하고 캘리포니아 것을 할 수 있습니다 n 코드에서 동적으로 TextBox의 크기 조절 가능을 쉽게 변경할 수 있습니다.

+0

좋은 옵션입니다 +1 –