2012-08-01 2 views
13

XAML에서 Visual Studio의 도구 상자, 솔루션 탐색기 또는 오류 목록과 같은 다른 패널을 잡아서 크기를 조정할 수있는 방법으로 컨트롤 또는 디스플레이 부분의 크기를 조정할 수 있습니까?사용자가 크기를 조절할 수있는 WPF 컨트롤?

이 작성된 예제에서. . .

<Window x:Class="UI_Experiments_1.MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     Title="MainWindow" Height="350" Width="525"> 
    <DockPanel x:Name="Tab3DockPanel" Background="#FFA0FFA0" LastChildFill="True"> 
     <ScrollViewer DockPanel.Dock="Left" Background="Lavender"> 
      <TextBlock Height="60" TextWrapping="Wrap" Background="#FFFFDDDD" Width="140"> 
        ScrollViewer - DockPanel.Dock="Left" 
      </TextBlock> 
     </ScrollViewer> 
     <TextBlock DockPanel.Dock="Top" HorizontalAlignment="Center" 
       TextWrapping="Wrap" Background="LemonChiffon"> 
       DockPanel.Dock="Top" HorizontalAlignment="Center" 
     </TextBlock> 
     <ListBox DockPanel.Dock="Right" Background="#FFCCEEFF"> 
       ListBox DockPanel.Dock="Bottom" 
     </ListBox> 
    </DockPanel> 
</Window> 

. . . 왼쪽에 도크 된 ScrollView, 맨 아래에 도킹 된 ListBox 및 맨 위에있는 TextBlock이있는 DockPanel이 있습니다. 동일한 효과를 얻기 위해 크기 조절 핸들을 첨부하는 방법이 있습니까? 아니면 이러한 핸들을 포함 할 수있는 다른 컨트롤이 있습니까? 앞에서 말했듯이, 위의 것은 실험을위한 구성 예제 일뿐입니다. 정확한 컨트롤을 사용하더라도 상관하지 않습니다.

MSDN의 Adorner를 사용하여 크기 조정 핸들을 추가하는 예제를 찾았지만 C# 코드가 170 ​​줄이 넘었으므로이 기능을 사용하기 전에 XAML에서이 기능을 구현할 고유 한 방법이 없었는지 확인하고 싶습니다.

미리 감사드립니다.

답변

11

회원님이 요청 정확한 컨트롤하지만 샘플에 대한 예입니다. 스플리터가 필요하고 양쪽에 무엇이 있는지 * 포함 된 컨트롤 스트레치가 필요합니다.

<Grid> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="*"/> 
    </Grid.RowDefinitions> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition Width="*" /> 
     <ColumnDefinition Width="auto" /> 
     <ColumnDefinition Width="*" />  
    </Grid.ColumnDefinitions> 
    <TextBox Grid.Row="0" Grid.Column="0" 
      HorizontalAlignment="Stretch" 
      VerticalAlignment="Stretch" 
      Text="TexBox" />  
    <GridSplitter Grid.Row="0" Grid.Column="1" Margin="2,0,2,0" 
        Width="3" Background="Purple" 
        VerticalAlignment="Stretch" 
        HorizontalAlignment="Center" /> 
    <ListView Grid.Row="0" Grid.Column="2" Background="Aqua" 
       HorizontalAlignment="Stretch" 
       VerticalAlignment="Stretch"/> 
</Grid> 
+0

왜 두 번째'ColumnDefinition'의 너비를 auto로 설정하겠습니까? 이것에 의해,'GridSplitter' 자체가 사이즈 변경이 가능하게됩니다. – DdW

+0

@DdW 정말요? 이걸 시험해 봤어? – Paparazzi

+1

옙 ... 다른 두 개의 '*'와 함께, 다른 두 개의 동일한 크기를 유지하면서'GridSplitter'의 크기를 조정합니다. 조언 :'GridSplitter'와'ColumnDefinition' 모두 너비를 고정 시키십시오 (3 또는 5 픽셀 정도) – DdW

관련 문제