【问题标题】:Problem with GridSplitter not resizing contentGridSplitter 无法调整内容大小的问题
【发布时间】:2013-03-27 01:42:37
【问题描述】:

首先我是 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 高度)和向下滚动查看器控件。

我尝试将水平网格拆分器放入它自己的行中,这会将内容向下移动,但它会缩小顶部网格的内容,这不是我想要的。

关于我做错了什么有什么建议吗?和比例高度有关系吗?

【问题讨论】:

  • 先试试下面的示例。如果您能更清楚地解释最终结果以及您不希望看到的行为,我可能会提供进一步的帮助。

标签: silverlight xaml silverlight-4.0 gridsplitter


【解决方案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>

【讨论】:

    【解决方案2】:

    如果我正确理解您的问题。 你应该能够从你的内部网格中取出 VerticalAlignment="Stretch" 和 Horizo​​ntalAlignment="Stretch" 并得到你想要的。

    gridsplitter 不喜欢不同行(或列)中的其他内容,它们的两个对齐都设置为拉伸。

    【讨论】:

    • 你是说这个控件有bug?
    • 我还没有调查到足以肯定地说,但根据我的定义,是的,我会尝试发布控件不按预期运行的各种情况。
    • 这里是one
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-18
    • 2016-08-23
    • 2016-05-29
    • 2017-09-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多