【问题标题】:Cannot get grid splitter to work the way I would like within 3 column grid in WPF无法让网格拆分器在 WPF 的 3 列网格中按我想要的方式工作
【发布时间】: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


【解决方案1】:

所以,这不是我想要的,但它正在为我做这项工作:

        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="auto" MinWidth="150" MaxWidth="1000"/>
            <ColumnDefinition Width="5"/>
            <ColumnDefinition Width="*" />
        </Grid.ColumnDefinitions>

我设置了左侧列的 MaxWidth,这样您就不能再将拆分器拖过右侧的不归路点。该解决方案还允许我将第一列的宽度设置为自动(这使得调整大小也可以按照我的意图进行)。除非您的显示器宽度小于 1000 像素(在我工作的环境中不会发生这种情况),否则此解决方案仅使用 XAML 即可工作。同样,我对这个解决方案有点失望,但它至少以简单的方式工作。

【讨论】:

  • 这解决了一个不同的问题。它位于与您最初发布的域不同的域中。但一切都很好,结局很好......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-11-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-07
  • 2021-04-12
  • 1970-01-01
相关资源
最近更新 更多