WPF listview / gridsplitter / scrollviewer проблема изменения размера

У меня проблема с разделителем сетки, который выталкивает мой список из поля зрения в этой комбинации. Шаги для воспроизведения:

  • Запустите программу, увеличьте размер окна
  • Перетащите красный разделитель до упора влево, чтобы минимизировать синий столбец
  • Расширяйте оба столбца ListView, пока они не выйдут за пределы области просмотра и не появится горизонтальная прокрутка
  • Снова уменьшите размер окна

Для меня это медленно выталкивает ListView за пределы окна. Обратите внимание, что ScrollViewer фактически уменьшается в размере вместе с окном, но не с той же скоростью и медленно уходит из поля зрения. Как только средство просмотра прокрутки начинает исчезать из поля зрения, разделитель больше не может использоваться!

Как ни странно, если я сначала не сверну левую панель, я не получу такого поведения!

Что было бы исправлением для этого ?

<Window x:Class="LayoutTest3.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="600" Width="800" MinHeight="600" MinWidth="800" >
    <Window.Resources>
        <XmlDataProvider XPath="/Celebrities/Celebrity" x:Key="celebs">
            <x:XData>
                <Celebrities xmlns="">
                    <Celebrity Name="Jimmy">
                        <LastName>Page</LastName>
                    </Celebrity>
                    <Celebrity Name="Johnny">
                        <LastName>Depp</LastName>
                    </Celebrity>
                    <Celebrity Name="Britney">
                        <LastName>Spears</LastName>
                    </Celebrity>
                </Celebrities>
            </x:XData>
        </XmlDataProvider>

        <DataTemplate x:Key="NameTemplate">
            <TextBlock Text="{Binding XPath=@Name}" />
        </DataTemplate>
    </Window.Resources>

    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="*" MinWidth="100" />
            <ColumnDefinition Width="Auto" />
            <ColumnDefinition Width="*" MinWidth="400" />
        </Grid.ColumnDefinitions>
        <Border Grid.Column="0" Background="Blue" />
        <GridSplitter Grid.Column="1" Width="5" HorizontalAlignment="Center" ResizeBehavior="PreviousAndNext" VerticalAlignment="Stretch" Background="Red" />
        <Border Grid.Column="2" Background="Green">
            <ListView ItemsSource="{Binding Source={StaticResource celebs}}">
                <ListView.View>
                    <GridView>
                        <GridView.Columns>
                            <GridViewColumn Header="Name" CellTemplate="{StaticResource NameTemplate}" Width="150" />
                            <GridViewColumn Header="LastName" DisplayMemberBinding="{Binding XPath=LastName}" />
                        </GridView.Columns>
                    </GridView>
                </ListView.View>
            </ListView>
        </Border>
    </Grid>
</Window>
6
задан DaveO 20 June 2011 в 12:34
поделиться