Проблема с GridSplitter, не меняющим размер - PullRequest
1 голос
/ 30 июня 2010

Прежде всего, я новичок в XAML, так что прости меня, если я сделал что-то глупое.

Я сократил свою страницу до следующего примера XAML (для просмотра в XamlPad):

<Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
xmlns:sys="clr-namespace:System;assembly=mscorlib" 
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 ShowGridLines="True">
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="200" MinWidth="150"  />
            <ColumnDefinition />
        </Grid.ColumnDefinitions>
        <Grid.RowDefinitions>
            <RowDefinition Height="3*" />
            <!--<RowDefinition Height="Auto" />-->
            <RowDefinition MaxHeight="25" Height="25" MinHeight="25" />
            <RowDefinition Height="1*"/>
        </Grid.RowDefinitions>
        <Grid Grid.RowSpan="4" Grid.Row="0" Grid.Column="0" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" />
        <GridSplitter Grid.Row="0" Grid.RowSpan="4" Width="4" />
        <Frame >
        </Frame>
        <GridSplitter Grid.Row="0" Height="4" Grid.Column="1" HorizontalAlignment="Stretch" VerticalAlignment="Bottom" />
        <Grid Grid.Column="2" Grid.Row="2" VerticalAlignment="Stretch" HorizontalAlignment="Stretch"/>
        <ScrollViewer VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto" Grid.Column="2" Grid.Row="3">
            <Grid VerticalAlignment="Stretch" HorizontalAlignment="Stretch" />
        </ScrollViewer>
    </Grid>
</Page>

Я хочу, чтобы горизонтальный разделитель сетки изменил размеры верхней панели, переместив нижнюю сетку (которую я хочу сохранить на 25 высот), и элементы управления Scrollviewer вниз.

Я пытался поместить горизонтальный разделитель сетки в его собственную строку, и это перемещает содержимое вниз, но сокращает содержимое верхней сетки, а это не то, что я ищу.

Есть предложения, что я делаю не так? Это как-то связано с пропорциональной высотой?

Ответы [ 2 ]

1 голос
/ 07 сентября 2010

Если я правильно понимаю вашу проблему.Вы должны быть в состоянии извлечь VerticalAlignment = "Stretch" и HorizontalAlignment = "Stretch" из вашей внутренней сетки и получить то, что вы хотите.

Gridsplitter не нравится другое содержимое в другой строке), в котором оба Allignments установлены для растяжения.

1 голос
/ 23 августа 2010

Во-первых, вы определили разделитель, как будто он применяется к нескольким строкам и столбцам, но на самом деле они должны иметь собственную строку или столбец, и они применяются к смежным строкам / столбцам, поэтому вы были на правильном пути раньше.

Проблема состоит в пропорциональных (звездных) строках.Чтобы сплиттер работал, по крайней мере, одна из соседних строк / столбцов должна иметь фиксированный размер (в пикселях), или она не настраивается с помощью мыши, а вместо этого выполняется странным пропорциональным движением.

Я не понял Ваш "но это сокращает содержимое верхней сетки, что не то, что я ищу" комментарий, поэтому, возможно, потребуется более подробное объяснение, и я сделал некоторые предположения, но файл XAML, показанный ниже, имеет разделительведущие себя:

 <Grid ShowGridLines="True">
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="191.5"  />
            <ColumnDefinition Width="8.5"/>
            <ColumnDefinition />
        </Grid.ColumnDefinitions>
        <Grid.RowDefinitions>
            <RowDefinition Height="194" />
            <RowDefinition Height="0.148*"/>
            <RowDefinition MaxHeight="25" Height="25" MinHeight="25" />
            <RowDefinition Height="0.852*"/>
        </Grid.RowDefinitions>
        <Grid Grid.RowSpan="4" Grid.Row="0" Grid.Column="0" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Grid.ColumnSpan="2" Margin="0,0,-0.5,0" />
        <sdk:GridSplitter Grid.Row="0" Grid.RowSpan="4" Grid.Column="1" HorizontalAlignment="Stretch" Margin="0.5,0,-0.5,0" />
        <Frame >
        </Frame>
        <sdk:GridSplitter Grid.Row="1" HorizontalAlignment="Stretch" Grid.ColumnSpan="3" />
        <Grid Grid.Column="2" Grid.Row="3" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Margin="0.5,0,-1,0"/>
        <ScrollViewer VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto" Grid.Column="2" Grid.Row="3" Margin="0.5,0,-1,0">
            <Grid VerticalAlignment="Stretch" HorizontalAlignment="Stretch" />
        </ScrollViewer>
    </Grid>
...