当我将列表框置于2 * 2网格中时,我设法重现了列表框的自动滚动查看器功能中的奇怪行为。
如果您尝试使用以下xaml,您将看到垂直滚动查看器在那里但不可见(它只是超过第一列的宽度)
<Window x:Class="WpfApplication1.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1" Height="200" Width="200">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition />
</Grid.RowDefinitions>
<ListBox Grid.Row="0" Grid.RowSpan="2" Grid.Column="0" >
<ListBox.Items>
<TextBlock Text="Item"/>
<TextBlock Text="Item"/>
<TextBlock Text="Item"/>
<TextBlock Text="Item"/>
<TextBlock Text="Item"/>
<TextBlock Text="Item"/>
<TextBlock Text="Item"/>
<TextBlock Text="Item"/>
<TextBlock Text="Item"/>
<TextBlock Text="Item"/>
<TextBlock Text="Item"/>
<TextBlock Text="Item"/>
</ListBox.Items>
</ListBox>
<Canvas Background="Yellow" Grid.Row="0" Grid.Column="1" MinHeight="20"/>
<Canvas Background="Red" Grid.Row="1" Grid.Column="1" MinHeight="20"/>
</Grid>
据我所知,有问题的控件是第一个画布(黄色画布)。 更具体的说,WPF不喜欢将任何控件放在row = 0 column = 1中,并且会破坏scrollviewer功能。
此问题是否可以重复给其他人或只是我?
答案 0 :(得分:1)
是的,它是可重复的,实际上,它可以在每个网格,位置或大小中重现。当您向ListBox添加实际高度时,滚动条将返回。
然而,真正的问题似乎来自黄色画布,它与列表框重叠。不管是不是这个错误,我不知道。删除黄色帆布,你没事。将行从0
更改为1
,您也可以。但是,当你给ListBox一个特定的高度时,如上所述,滚动条也会回来:
<ListBox Grid.Row="0" Grid.RowSpan="2" Grid.Column="0" Height="100">
<ListBox.Items>
<TextBlock Text="Item 1"/>
<TextBlock Text="Item 2"/>
<TextBlock Text="Item 3"/>
<TextBlock Text="Item 4"/>
<TextBlock Text="Item 5"/>
<TextBlock Text="Item 6"/>
<TextBlock Text="Item 7"/>
<TextBlock Text="Item 8"/>
<TextBlock Text="Item 9"/>
<TextBlock Text="Item 10"/>
<TextBlock Text="Item 11"/>
<TextBlock Text="Item 12"/>
</ListBox.Items>
</ListBox>