WPF列表框不会滚动垂直
在一个Groupbox内我有一个Listbox,ListboxItems也在XAML中定义。 ListBox中的定义:WPF列表框不会滚动垂直
<ListBox Name="lvAvoidCountry" Margin="5,5,5,5"
Background="Transparent"
ScrollViewer.VerticalScrollBarVisibility="Visible"
ScrollViewer.HorizontalScrollBarVisibility="Disabled" >
项目被这样定义:
<ListViewItem >
<CheckBox Name="chkAlbanien" Tag="55">
<StackPanel Orientation="Horizontal">
<Image Source="images/flag_albania.png" Height="30"></Image>
<TextBlock Text="Albanien" Margin="5,0,0,0"></TextBlock>
</StackPanel>
</CheckBox>
</ListViewItem>
如果我删除的ScrollViewer设置我得到的水平滚动和项目很好格式化 - 正确的宽度。如果使用滚动查看器设置,项目会被切断,以便所有项目都放在列表框中。 (例如显示标志,显示复选框,但文本只是“阿尔巴”)。
感谢您的任何提示!
顾名思义,ScrollViewer.HorizontalScrollBarVisibility="Disabled"
禁用水平滚动。如果你这样做,但你的ListBoxItems太长,它们会被切断。 StackPanel不会增长或缩小以适应ListBox,并且如果它太窄,它将不会“包裹”您的项目以适合ListBox,即使您将TextWrapping
添加到TextBlock。它非常固执。我认为你的主要问题是StackPanel。
而是一个StackPanel的,请尝试使用一个网格,象这样定义的2列:
<ListViewItem >
<CheckBox Name="chkAlbanien" Tag="55">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Image Grid.Column="0" Source="images/flag_albania.png" Height="30"/>
<TextBlock Grid.Column="1"
TextWrapping="Wrap"
Text="Albanien" Margin="5,0,0,0"/>
</Grid>
</CheckBox>
</ListViewItem>
Auto
将“拆封”的图像列,*
会给文本的所有剩余空间。然后将TextWrapping
添加到您的文本块中,以防过长。
编辑:增加了更完整的代码示例,并稍微改变了我的答案。
嗨,谢谢你的回答 - 我想让列表框看起来像 | ================================ | | x 1 x 2 x 3 x 4 x 5 | | x 6 x 7 x 8 x 9 x 10 | 但目前它“水平向右”画出“x 6和x 7” - 在视线之外,并以“x 8”开始下一行。 我希望它只使用可见宽度“绘制”的项目,并允许它垂直滚动,... 我想用ColumDefinitions我只会得到一个项目的列,... – JerryVienna 2010-03-08 10:45:23
所以你不想要每行一列listboxitem,垂直堆叠...你想listboxitems水平排列,所以他们“流动”像文本? (对不起,我很难想象你想要什么,如果你能绘制图表并将它添加到你的问题中,可能会有帮助。) – 2010-03-08 12:07:47
如果你想在列表框中垂直滚动,那么不要把它放在一个堆栈面板中,而应该使用网格。
你想达到什么目的?如果将水平滚动条可见性设置为禁用,这似乎是正常结果。或者我错过了什么? – Timores 2010-03-08 09:38:48
我想垂直滚动。 – JerryVienna 2010-03-24 11:34:38