2010-04-28 2 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

Хех, интересная точка зрения :-) – tomo

+0

@tomo - Хех, интересный принятый ответ –

+0

Да! Лучше избегать, чем лечить! В офисе я решил использовать разветвители Telerik. Встроенный SL-разделитель для меня не существует! – tomo

2

Это ваш макет столбца. Вам нужно звездно проклейки для левого и правого столбцов, а также для автомобилей середины:

EDIT:

Правильный способ использования сетки разветвитель (в данном 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

Я считаю, что сплиттер и авто ширина просто не работают.

Смежные вопросы