2010-04-28 7 views
1

내 데모 응용 프로그램은 브라우저의 전체 화면을 채워야하는 두 개의 사각형을 표시합니다. 그들 사이에는 수직 스플리터가 있습니다. 이것은 기본적인 시나리오처럼 보이지만 xaml에서 이것을 구현하는 방법을 모릅니다. 나는 이것이 전체 화면을 채우도록 강요 할 수 없으며 스플리터를 움직이면 전체 화면이 커집니다. 아무도 도와 줄 수 있니?이동할 때 이상한 스플리터 동작

<UserControl 
    xmlns:controls="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls" 
    x:Class="SilverlightApplication1.MainPage" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
    mc:Ignorable="d" d:DesignWidth="640" d:DesignHeight="480"> 
    <Grid x:Name="LayoutRoot" VerticalAlignment="Stretch" HorizontalAlignment="Stretch"> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition Width="Auto"/> 
      <ColumnDefinition Width="Auto"/> 
      <ColumnDefinition Width="Auto"/>    
     </Grid.ColumnDefinitions> 
     <Border BorderBrush="Black" BorderThickness="1" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" MinWidth="50"> 
     </Border> 
     <controls:GridSplitter Grid.Column="1" VerticalAlignment="Stretch" Width="Auto" ></controls:GridSplitter> 
     <Border BorderBrush="Blue" BorderThickness="1" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Grid.Column="2" MinWidth="50"></Border> 
    </Grid> 
</UserControl> 

답변

2

GridSplitter 그냥 안됐어. 도킹 컨트롤을 사용해보십시오.

+0

Heh, 흥미로운 견해 :-) – tomo

+0

@tomo - Heh, 재미있는 대답 대답 –

+0

그래! 치료하는 것보다 피하는 것이 좋습니다! 사무실에서 나는 Telerik의 스플리터를 사용하기로 결정했습니다. 붙박이 SL 쪼개는 도구는 저를 위해 존재하지 않는다! – tomo

2

귀하의 열 레이아웃입니다. 당신은 스타-크기 중간의 왼쪽과 오른쪽 열 및 자동차에 필요한 :

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

편집 :

이 특히 그리드 스플리터 (사용의 올바른 방법 case)는 그리드에서 두 개의 열만 사용하는 것으로 나타납니다. 그리드 스플리터는 첫 번째 열에 배치되지만 오른쪽에 정렬해야합니다. 좋아요 :

<Grid x:Name="LayoutRoot" 
      VerticalAlignment="Stretch" 
      HorizontalAlignment="Stretch"> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition Width="*" /> 
      <ColumnDefinition Width="*" /> 
     </Grid.ColumnDefinitions> 
     <Border BorderBrush="Black" 
       BorderThickness="3" 
       Margin="3,3,13,3" 
       VerticalAlignment="Stretch" 
       HorizontalAlignment="Stretch" 
       MinWidth="50"> 
     </Border> 
     <controls:GridSplitter Grid.Column="0" 
           VerticalAlignment="Stretch" 
           HorizontalAlignment="Right" 
           Width="10"></controls:GridSplitter> 
     <Border BorderBrush="Blue" 
       Margin="3" 
       BorderThickness="3" 
       VerticalAlignment="Stretch" 
       HorizontalAlignment="Stretch" 
       Grid.Column="2" 
       MinWidth="50"></Border> 
    </Grid> 
+0

약간 도움이됩니다. 응용 프로그램은 전체 화면을 채우지 만 분할자를 움직일 때 어떻게 작동하는지 보셨습니까? – tomo

+0

예, 지금 보입니다. 미안하지만, 나는 그것을 놓쳤다. 위의 업데이트 된 코드를 참조하십시오. –

1

스플리터와 자동 너비가 작동하지 않습니다.