我有一个数据绑定和itemtemplated ListBox:
<ListBox x:Name="lbLista"
ScrollViewer.VerticalScrollBarVisibility="Visible">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<CheckBox IsChecked="{Binding Deleteable, Mode=TwoWay}" />
<Label Content="{Binding Name}" />
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
ites显示正常,它们来自ObservableCollection。
问题是滚动条,它出现但无法使用 - 它没有抓取句柄。我已尝试在ListBox上设置一些ScrollView附加属性,但它们不会影响这种情况。
答案 0 :(得分:31)
我将你的代码粘贴到测试项目中,添加了大约20个项目,我得到了可用的滚动条,没有问题,并且它们按预期工作。当我只添加一些项目(这样不需要滚动)时,我没有可用的滚动条。可能是这种情况吗?你没有添加足够的物品?
如果删除ScrollViewer.VerticalScrollBarVisibility="Visible"
,则只有在需要时才会显示滚动条。
答案 1 :(得分:9)
ListBox将尝试扩展可用的高度。当您设置ListBox的Height属性时,您将获得一个实际可用的scrollviewer ...
如果您希望ListBox符合可用的高度,您可能希望尝试从父控件调节高度。例如,在网格中,在RowDefinition中将高度设置为自动可能会有效...
HTH
答案 2 :(得分:5)
我从来没有幸运任何可放置在堆叠面板内的可滚动内容(从ScrollableContainer派生的任何内容。stackpanel有一个奇怪的布局机制,当测量操作完成时我会发现垂直尺寸无限大,因此没有约束 - 因此它超出了容器的边界并最终被剪切。滚动条没有显示,因为控件认为它没有世界上的所有空间。
您应该始终将可滚动内容放在容器中,该容器可以在运行时的布局操作期间解析为已知高度,以便滚动条大小适当。可视树中的父容器必须能够解析为实际高度,如果将RowDefinition o的高度设置为auto或fixed,则会在网格中发生这种情况。
这也发生在Silverlight中。
-em -
答案 3 :(得分:0)
寻求答案。我自己也尝试了空项目 - 看到天堂和七海的全能创造者 - 它起作用了。我最初的ListBox里面是root。由于某种原因,ListBox根本不喜欢在StackPanel内部! =)
-pom -