调整多个网格集团和不同尺寸的问题



我遇到了我整天都在尝试解决的Gridsplitter的奇怪问题,但是文档和Google都没有真正能够帮助我解决这个问题。p>问题是我有一个带有多个网格的网格,其中一些行具有不同的高度单元。三个行具有具体的高度值,一排有1星,使其"浸泡"所有左上的空间。

不幸的是,这引发了一些奇怪的网格拼写行为。基本上,试图通过在第5行中操纵网格插曲器来设置Gridrow 4和6的高度,不会影响第6行(第6行)的高度。相反,它操纵第4行和第2行,并在第3行中重叠Gridsplitter。

我是将所有行高度设置为特定的像素高度,网格拼图都可以正常工作,但是这使网格可以超出屏幕的边缘,这不是预期的。

我做了一个小型示例项目来说明问题。

<Window x:Class="GridSplitterTest.MainWindow"
    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"
    xmlns:local="clr-namespace:GridSplitterTest"
    mc:Ignorable="d"
    Title="MainWindow" Height="350" Width="525">
<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="100"></RowDefinition>
        <RowDefinition Height="Auto"></RowDefinition>
        <RowDefinition Height="*"></RowDefinition>
        <RowDefinition Height="Auto"></RowDefinition>
        <RowDefinition Height="100"></RowDefinition>
        <RowDefinition Height="Auto"></RowDefinition>
        <RowDefinition Height="50"></RowDefinition>
    </Grid.RowDefinitions>
    <TextBlock Grid.Row="0" HorizontalAlignment="Center" VerticalAlignment="Center" >TextBlock01</TextBlock>
    <GridSplitter Grid.Row="1" Height="5" HorizontalAlignment="Stretch" VerticalAlignment="Center" Background="Black" ResizeBehavior="PreviousAndNext" ResizeDirection="Rows"></GridSplitter>
    <TextBlock Grid.Row="2" HorizontalAlignment="Center" VerticalAlignment="Center" >TextBlock02</TextBlock>
    <GridSplitter Grid.Row="3" Height="5" HorizontalAlignment="Stretch" VerticalAlignment="Center" Background="Black" ResizeBehavior="PreviousAndNext" ResizeDirection="Rows"></GridSplitter>
    <TextBlock Grid.Row="4" HorizontalAlignment="Center" VerticalAlignment="Center" >TextBlock03</TextBlock>
    <GridSplitter Grid.Row="5" Height="5" HorizontalAlignment="Stretch" VerticalAlignment="Center" Background="Black" ResizeBehavior="PreviousAndNext" ResizeDirection="Rows"></GridSplitter>
    <TextBlock Grid.Row="6" HorizontalAlignment="Center" VerticalAlignment="Center" >TextBlock04</TextBlock>
</Grid>

任何人都对有什么问题以及是否有任何解决方案有一个很好的了解?

我认为这里没有任何问题。您有所有行,但一组为固定尺寸。因此,调整任何行高仅允许网格重新调整一行(第2行)进行补偿,因为另一个剩余行(行#0&amp; 6)也是固定的尺寸。

我认为解决此问题的唯一方法是使所有文本块行成比例。例如:

<Grid.RowDefinitions>
    <RowDefinition Height="3*"></RowDefinition>
    <RowDefinition Height="Auto"></RowDefinition>
    <RowDefinition Height="1*"></RowDefinition>
    <RowDefinition Height="Auto"></RowDefinition>
    <RowDefinition Height="3*"></RowDefinition>
    <RowDefinition Height="Auto"></RowDefinition>
    <RowDefinition Height="2*"></RowDefinition>
</Grid.RowDefinitions>

最新更新