WPF GridSplitter не работает с управлением WebBrowser? - PullRequest
1 голос
/ 17 декабря 2008

Я боролся с GridSplitter . Кажется, он несовместим с элементом управления WPF WebBrowser.

Если я изменю размеры своего окна и перемещаю GridSplitter, то я могу сделать свою сетку шире, чем мое окно и невидимой.

До:

WPF GridSplitter WebBrowser До http://img239.imageshack.us/img239/4061/grid1vn8.gif

После: (обратите внимание на полосы прокрутки)

Веб-браузер WPF GridSplitter After http://img101.imageshack.us/img101/4303/grid2so0.gif

Мой XAML ...

<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        MinWidth="450"
        Width="450"
        Height="300"
        Title="Window3">
    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition MinWidth="200" Width="*"/>
            <ColumnDefinition Width="Auto"/>
            <ColumnDefinition MinWidth="200" Width="*"/>
        </Grid.ColumnDefinitions>
        <Button Name="Button2"
                Grid.Column="0"
                Margin="5"
                Content="Button2"/>
        <GridSplitter
            Width="2"
            Grid.Column="1"
            HorizontalAlignment="Center"
            Margin="5"
            Panel.ZIndex="1"
            VerticalAlignment="Stretch"
            ResizeBehavior="PreviousAndNext"
            ResizeDirection="Columns"/>
        <WebBrowser
            Grid.Column="2"
            Margin="5"
            Source="http://www.google.com"/>
    </Grid>
</Window>

Действия по воспроизведению проблемы ...

  1. Перетащите правый край окна вправо, чтобы примерно вдвое увеличить его ширину.
  2. Перетащите сплиттер влево до упора
  3. Перетащите правый край окна влево до упора.

Как мне удержать GridSplitter от изменения размера моей Сетки сверх того, что может содержать Окно?

Кто-нибудь знает больше об этой проблеме? ... или есть обходной путь?

Ответы [ 2 ]

3 голосов
/ 18 декабря 2008

Мне удалось воспроизвести это с помощью Border в ScrollViewer (но не без ScrollViewer), поэтому я предполагаю, что прокрутка как-то все испортила.

Установка MaxWidth в левом столбце (очень большая MaxWidth, которая не должна иметь практического эффекта), казалось, исправила это:

<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Height="300"
        MinWidth="450"
        Width="450"
        Title="Window3">
    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition MinWidth="200" Width="*" MaxWidth="10000"/>
            <ColumnDefinition Width="Auto"/>
            <ColumnDefinition MinWidth="200" Width="*"/>
        </Grid.ColumnDefinitions>
        <Button
            Name="Button2"
            Grid.Column="0"
            Margin="5"
            Content="Button2"/>
        <GridSplitter
            Width="2"
            Grid.Column="1"
            HorizontalAlignment="Center"
            Margin="5"
            Panel.ZIndex="1"
            VerticalAlignment="Stretch"
            ResizeBehavior="PreviousAndNext"
            ResizeDirection="Columns"/>
        <WebBrowser Grid.Column="2" Margin="5" Source="http://www.google.com"/>
    </Grid>
</Window>

Похоже, что в какой-то момент размер звезды переопределяет тот факт, что свободного места не осталось, поэтому, когда левый столбец достигает ширины = 200, а GridSplitter изменил размер звезды в правом столбце на 3 * или около того, столбец будет 600 независимо от того, есть место или нет.

1 голос
/ 17 декабря 2008

Я знаю, что вам, вероятно, надоело это слышать, но я не могу воспроизвести вашу проблему, когда я использую XAML выше, слегка модифицированный, чтобы быть чистым XAML:

( XAML code moved into question. )

Может ли быть что-то в вашем коде позади, что вызывает поведение?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...