无法在WPF中的3列网格中使网格拆分器以我希望的方式工作
本文关键字:网格 我希望 工作 方式 拆分 WPF 中的 3列 | 更新日期: 2023-09-27 18:22:47
我有以下使用WPF和一些第三方控件(Telerik)的网格:
<Grid x:Name="grid2" Grid.Row="1">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" MinWidth="150"/>
<ColumnDefinition Width="5"/>
<ColumnDefinition Width="*" MinWidth='80'/>
</Grid.ColumnDefinitions>
<Grid Grid.Column="0">
<Grid.RowDefinitions>
<RowDefinition Height="26"/>
<RowDefinition/>
</Grid.RowDefinitions>
<telerik:RadBreadcrumb Grid.ColumnSpan="3" Header="RadBreadcrumb"/>
<telerik:RadTreeView Grid.Row="1"/>
</Grid>
<GridSplitter Grid.Column="1" HorizontalAlignment="Center" Width="5" Height="auto"/>
<telerik:RadTransitionControl x:Name="Trans" Grid.Column="2" Width="auto"/>
</Grid>
目前,我正在尝试进行调整,以便在重新调整窗口大小时,第0列(左侧)中的网格不会重新调整大小。我可以通过将列"0"的宽度设置为静态150或自动来实现此效果。然而,当我这样做时,网格分割器不再尊重列2的最小宽度,并允许它从屏幕上拖下来。通过将列0和2都设置为星形宽度(我现在在代码中使用的方式),可以考虑最小宽度(列不能收缩超过定义的150和80),但它们不能正确调整大小(左列与右列按比例调整大小)。我想以某种方式让调整大小和网格垃圾同时工作。如果我不够清楚或者需要更多的投入,请告诉我。
所以,这不是我想要的,但它正在为我做这项工作:
<Grid.ColumnDefinitions>
<ColumnDefinition Width="auto" MinWidth="150" MaxWidth="1000"/>
<ColumnDefinition Width="5"/>
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
我设置了左侧列的最大宽度,这样你就不能再拖动拆分器经过右侧的不归路点。这个解决方案还允许我将第一列的宽度设置为auto(这使重新调整大小的工作也符合我的预期)。除非你有一个小于1000px宽的监视器(在我工作的环境中不会发生这种情况),否则这个解决方案只能使用XAML。同样,我对这个解决方案有点失望,但它至少以一种简单的方式工作。