Проблема с GridSplitter, не изменяющим размер содержания

Прежде всего я плохо знаком с 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 вниз.

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

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

1
задан Fermin 30 June 2010 в 10:19
поделиться

1 ответ

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

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

Я не понял ваш комментарий «но он сжимает содержимое верхней сетки, а это не то, что я ищу» , поэтому может потребоваться дополнительное объяснение, и я сделал некоторые предположения, но в файле 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>
1
ответ дан 2 September 2019 в 23:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: