我遇到了我整天都在尝试解决的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>