0

我使用 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),但它们不会重新调整大小正确(左列按右列的比例重新调整大小)。我想以某种方式让调整大小和网格分割器同时工作。如果我不够清楚或需要更多输入,请告诉我。

4

1 回答 1

0

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

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

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

于 2013-07-18T16:00:39.817 回答