2

我有如下所示的 XAML(例如)。如果您将网格拆分器拖到最左边,并继续拖动鼠标,右侧的列将在窗口范围之外增大 - 显然不是我想要的。

问题是我无法在右侧列上设置硬 MaxWidth,因为用户可以调整窗口大小,从而增加该列的可用空间。到目前为止,我认为我需要将右侧列的 MaxWidth 绑定到窗口的客户区减去左侧的 MinWidth 加上拆分器列的宽度。但如果可能的话,我想避免这种情况。想法?

<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Width="450"
        Height="300">
    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="*" MinWidth="100" />
            <ColumnDefinition Width="Auto" />
            <ColumnDefinition Width="200" MinWidth="200" />
        </Grid.ColumnDefinitions>

        <Grid Grid.Column="0">
            <Button>Monkey</Button>
        </Grid>

        <GridSplitter Grid.Column="1" Width="7" ResizeBehavior="PreviousAndNext" />

        <Grid Grid.Column="2" Margin="4">
            <Grid.RowDefinitions>
                <RowDefinition Height="Auto" />
                <RowDefinition Height="Auto" />
            </Grid.RowDefinitions>

            <GroupBox Grid.Row="0" Header="Spaghetti" Margin="0, 0, 0, 5">
                <ComboBox HorizontalAlignment="Stretch" VerticalAlignment="Stretch">Noodles</ComboBox>
            </GroupBox>

            <Expander Grid.Row="1" Header="Batman" IsExpanded="True" Margin="0, 0, 0, 5">
                <Button HorizontalAlignment="Stretch" VerticalAlignment="Stretch">Batman!</Button>
            </Expander>
        </Grid>
    </Grid>
</Window>
4

1 回答 1

0

我有同样的问题。也许这将是部分答案。我将要扩展的列的 MaxWidth 绑定到其网格的 ActualWidth 。目标是拆分器永远不会超过其网格的大小。绑定工作正常,但没有达到目标,因为一旦我的网格拆分器到达网格边缘,当我拖动拆分器时,网格开始调整大小。如果我们可以使网格不使用拆分器调整大小,这应该可以工作。

于 2010-12-16T21:26:01.723 回答