この組み合わせでリストビューをビューの外に押し出すグリッドスプリッターに問題があります。再現する手順:
- プログラムを起動し、ウィンドウ サイズを大きくドラッグします
- 赤いスプリッターを左端までドラッグして、青い列を最小化します
- ビューポートの外に出て水平スクロールが表示されるまで、両方の ListView 列を広げます
- ウィンドウのサイズをもう一度小さくドラッグします
私にとって、これは ListView をウィンドウの外にゆっくりと押し出します。ScrollViewer は実際には Window のサイズに合わせて縮小されていますが、同じ速度ではなく、ゆっくりと見えなくなることに注意してください。スクロールビューアがビューから滑り落ち始めると、スプリッターは使用できなくなります。
奇妙なことに、最初に左側のパネルを最小化しないと、この動作が得られません!
これに対する修正は何ですか?
<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>