Gridsplitter 仅在水平时不显示也不工作
Gridsplitter not showing nor working only when horizontal
我有一个模拟打印预览和一些其他功能的网格
<Grid Name="grdReport_RTF" Visibility="Visible">
<Grid.RowDefinitions>
<RowDefinition Height="*" />
<RowDefinition Height="5" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<RichTextBox x:Name="rtbReport" Grid.Row="0" Margin="10" BorderBrush="Gray" Background="White" Foreground="Black" IsEnabled="True" Padding="10" Style="{DynamicResource rtbStyleDocLocal}" />
<GridSplitter Grid.Row="1" Height="5" HorizontalAlignment="Stretch" />
<StackPanel Grid.Row="2" Orientation="Horizontal" Margin="10" >
...
</StackPanel>
<TabControl Grid.Row="3" Background="Transparent" BorderBrush="Gainsboro" BorderThickness="3" Margin="10">
<TabItem Name="tbiReports" BorderBrush="Red" Background="Transparent" >
<DataGrid Name="dtgReports" Background="Green" Height="100" Margin="10" />
</TabItem>
<TabItem Name="tbiLastReport" BorderBrush="Red" Background="Transparent">
<DataGrid Name="dtgLastReport" Background="Green" Height="100" Margin="10" />
</TabItem>
</TabControl>
</Grid>
所以无论我怎么尝试,gridspliter 都不显示也不工作。
此外,我已经删除了下面的所有代码并放置了提供的代码 here 它顽固地继续隐藏
更新
我已经尽力简化了这一切。简而言之:
<Grid Grid.Column="1">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Border Grid.Column="0" Background="Transparent" BorderBrush="Gainsboro" BorderThickness="3" />
<GridSplitter Grid.Column="1" Width="10"/>
<Border Grid.Column="2" Background="Transparent" BorderBrush="Gainsboro" BorderThickness="3" />
</Grid>
很有魅力。而不是以下内容:
<Grid Grid.Column="1">
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Border Grid.Row="0" Background="Transparent" BorderBrush="Gainsboro" BorderThickness="3" />
<GridSplitter Grid.Row="1" Height="10"/>
<Border Grid.Row="2" Background="Transparent" BorderBrush="Gainsboro" BorderThickness="3" />
</Grid>
这有什么问题吗?
通常,GridSplitter
元素应根据其大小比例自动选择其调整大小方向(如果 Height < Width
则为上下,如果 Width < Height
则为左右)。由于某些原因,此逻辑可能不适用,然后需要明确指定调整大小方向。
<GridSplitter Grid.Row="1" Height="10" Width="100" ResizeDirection="Rows"/>
在此代码中,设置 Width
和 Height
可确保拆分器不会因大小为零而保持不可见状态,并且 ResizeDirection
可确保支持正确的方向。
另一个可能派上用场的 属性 是 ResizeBehavior="PreviousAndNext"
,以确保右侧 rows/columns 受到调整大小操作的影响。
我有一个模拟打印预览和一些其他功能的网格
<Grid Name="grdReport_RTF" Visibility="Visible">
<Grid.RowDefinitions>
<RowDefinition Height="*" />
<RowDefinition Height="5" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<RichTextBox x:Name="rtbReport" Grid.Row="0" Margin="10" BorderBrush="Gray" Background="White" Foreground="Black" IsEnabled="True" Padding="10" Style="{DynamicResource rtbStyleDocLocal}" />
<GridSplitter Grid.Row="1" Height="5" HorizontalAlignment="Stretch" />
<StackPanel Grid.Row="2" Orientation="Horizontal" Margin="10" >
...
</StackPanel>
<TabControl Grid.Row="3" Background="Transparent" BorderBrush="Gainsboro" BorderThickness="3" Margin="10">
<TabItem Name="tbiReports" BorderBrush="Red" Background="Transparent" >
<DataGrid Name="dtgReports" Background="Green" Height="100" Margin="10" />
</TabItem>
<TabItem Name="tbiLastReport" BorderBrush="Red" Background="Transparent">
<DataGrid Name="dtgLastReport" Background="Green" Height="100" Margin="10" />
</TabItem>
</TabControl>
</Grid>
所以无论我怎么尝试,gridspliter 都不显示也不工作。
此外,我已经删除了下面的所有代码并放置了提供的代码 here 它顽固地继续隐藏
更新
我已经尽力简化了这一切。简而言之:
<Grid Grid.Column="1">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Border Grid.Column="0" Background="Transparent" BorderBrush="Gainsboro" BorderThickness="3" />
<GridSplitter Grid.Column="1" Width="10"/>
<Border Grid.Column="2" Background="Transparent" BorderBrush="Gainsboro" BorderThickness="3" />
</Grid>
很有魅力。而不是以下内容:
<Grid Grid.Column="1">
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Border Grid.Row="0" Background="Transparent" BorderBrush="Gainsboro" BorderThickness="3" />
<GridSplitter Grid.Row="1" Height="10"/>
<Border Grid.Row="2" Background="Transparent" BorderBrush="Gainsboro" BorderThickness="3" />
</Grid>
这有什么问题吗?
通常,GridSplitter
元素应根据其大小比例自动选择其调整大小方向(如果 Height < Width
则为上下,如果 Width < Height
则为左右)。由于某些原因,此逻辑可能不适用,然后需要明确指定调整大小方向。
<GridSplitter Grid.Row="1" Height="10" Width="100" ResizeDirection="Rows"/>
在此代码中,设置 Width
和 Height
可确保拆分器不会因大小为零而保持不可见状态,并且 ResizeDirection
可确保支持正确的方向。
另一个可能派上用场的 属性 是 ResizeBehavior="PreviousAndNext"
,以确保右侧 rows/columns 受到调整大小操作的影响。