rowspan rowdefinitions example .net wpf xaml grid

.net - rowdefinitions - ¿WPF GridSplitter no funciona con el control WebBrowser?



wpf grid splitter (2)

He estado luchando con el GridSplitter . Parece ser incompatible con el control WPF WebBrowser.

Si cambio el tamaño de mi ventana y muevo el GridSplitter, entonces puedo hacer que mi cuadrícula sea más ancha que mi ventana y no visible.

Antes de:

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

Después: (observe las barras de desplazamiento)

WPF GridSplitter WebBrowser Después de http://img101.imageshack.us/img101/4303/grid2so0.gif

Mi 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>

Pasos para reproducir el problema ...

  1. Arrastre el borde derecho de la ventana hacia la derecha hasta aproximadamente el doble de su ancho
  2. Arrastre el divisor a la izquierda hasta donde sea posible
  3. Arrastre el borde derecho de la ventana hacia la izquierda todo lo que pueda.

¿Cómo evito que GridSplitter cambie el tamaño de mi cuadrícula más allá de lo que la ventana puede contener?

¿Alguien sabe más sobre este problema? ... o tiene una solución alternativa?


Sé que probablemente estés cansado de escuchar esto, pero no puedo reproducir tu problema cuando uso el XAML anterior, ligeramente modificado para ser XAML puro:

( XAML code moved into question. )

¿Podría haber algo en su código subyacente que esté causando el comportamiento?


Pude reproducir esto con un borde en un ScrollViewer (pero no sin un ScrollViewer), así que supongo que el desplazamiento lo estropea de alguna manera.

Establecer un MaxWidth en la columna de la izquierda (un MaxWidth muy grande que no debería tener ningún efecto práctico) pareció arreglarlo:

<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>

Parece que en algún punto, el tamaño de estrella anula el hecho de que no queda espacio, por lo que cuando la columna izquierda alcanza Ancho = 200, y el Separador de cuadrícula ha cambiado el tamaño de la estrella de la columna derecha a 3 * o menos, la columna ser 600 si hay espacio o no.