Как я могу запретить разделителю сетки изменять размер столбца за пределами границ окна? - PullRequest
1 голос
/ 02 июля 2010

У меня есть 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>

1 Ответ

0 голосов
/ 17 декабря 2010

У меня такая же проблема.Может быть, это будет частичным ответом.Я ограничил MaxWidth столбца, который я расширяю, до ActualWidth его сетки.Цель состоит в том, чтобы сплиттер никогда не превышал размер своей сетки.Привязка работает правильно, но не достигает цели, потому что, как только мой разделитель сетки достигает края сетки, размер сетки начинает увеличиваться, когда я перетаскиваю разделитель.Если мы сможем изменить размер сетки с помощью сплиттера, это должно сработать.

...