【发布时间】:2013-07-16 07:01:48
【问题描述】:
我有以下使用 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 之外),但它们不会重新调整大小正确(左列按右列的比例重新调整大小)。我想以某种方式让调整大小和网格分割器同时工作。如果我不够清楚或需要更多输入,请告诉我。
【问题讨论】:
-
我刚刚尝试加载和运行您的 Xaml,当 Telerik 控件替换为停靠面板时,它似乎工作正常。这是什么意思'...调整大小和gridsplitter同时工作?或者这是一个 Telerik 特定的问题?
-
我会尝试将 RowDefinitions 直接拉到网格中。使用拆分器,您通常不会将宽度设置为 auto。
-
@GarryVass,我没有理由相信这是 Telerik 特定的问题,通过重新调整大小和 gridsplitter 同时工作,我的意思是我希望这两个问题m 必须用相同的代码来解决。当我重新调整窗口大小时,我希望左列的宽度不重新调整大小,以及当我将 gridsplitter 拖到远边缘时,当我点击任一列的 MinWidth 时它会停止。目前我可以做到这两个,但不能使用同一段代码。
-
@Blam 我不确定您将 RowDefinitions 向上拉到底是什么意思,而且我实际上并没有将拆分器宽度设置为自动,也从未提出过这样的建议。需要说明的是,第 0 列是左侧,第 1 列是网格分割器,第 2 列是右侧。
-
@BrandonGodfrey,关于窗口调整大小的要求,是否意味着左侧网格必须保持相同的实际宽度?或者只是与客户区相同的比例宽度?
标签: c# wpf xaml gridsplitter