Странное поведение сплиттера при его перемещении - PullRequest
1 голос
/ 28 апреля 2010

Мое демонстрационное приложение отображает два прямоугольника, которые должны заполнить весь экран браузера. Между ними есть вертикальный сплиттер. Это похоже на базовый сценарий, но я понятия не имею, как реализовать это в 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>

Ответы [ 4 ]

2 голосов
/ 29 апреля 2010

GridSplitter просто отстой. Попробуйте элемент управления стыковкой.

2 голосов
/ 28 апреля 2010

Это ваш столбец макета. Для левого и правого столбцов необходимо указать размер звездочки, а для середины - значение auto:

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

EDIT:

Правильный способ использования разделителя сетки (в данном конкретном случае) заключается в использовании только двух столбцов в сетке. Разделитель сетки должен быть помещен в первый столбец , но выровнен вправо. Вот так:

<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>
1 голос
/ 12 июня 2010

Вот забавная примерная страница с образцами серебряного света.

http://www.xs4all.nl/~wrb/Articles/Article_WPFSplitPanels_01_SL.htm

1 голос
/ 29 апреля 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...