2009-01-27 64 views
32

我有一个数据绑定和itemtemplated列表框:列表框的ItemTemplate与

<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附加属性,但它们不影响情况。

回答

30

我把你的代码粘贴到测试项目中,添加了大约20个项目,我得到了可用的滚动条,没有问题,它们按预期工作。当我只添加一些项目(例如滚动是不必要的)时,我没有可用的滚动条。情况会是这样吗?你没有添加足够的物品?

如果您删除了ScrollViewer.VerticalScrollBarVisibility="Visible",那么仅当您需要滚动条时才会显示滚动条。

9

列表框将尝试在高度可扩展。当您设置列表框的高度属性你实际工作的ScrollViewer中......

如果你希望你的列表框中accodate高度可用,可能想尝试调节您的家长控件的高度。在例如电网,在RowDefinition可能做的伎俩的高度设置为自动...

HTH

0

Thnaks的答案。我自己也尝试过一个空的项目,并且 - 看到天上和七海的全能创造者 - 它的工作。我最初有内部的根框里面的ListBox。出于某种原因,ListBox不喜欢进入StackPanel内部! =)

-pom-

+7

你应该真的接受原来的答案,帮助你,而不是你自己的确认。 :-) – 2009-02-27 00:46:01

4

我从未有过放置一个StackPanel(任何从ScrollableContainer衍生内的任何可滚动内容的任何运气。该具有的StackPanel完成测量操作时混淆子控件奇数布局机制我发现垂直尺寸最终是无限的,因此不会受到限制 - 因此它超出了容器的边界并最终被裁剪。滚动条不显示,因为控件认为它具有世界上所有的空间, t。

您应该始终将可滚动内容放置在容器中,该容器在运行时的布局操作期间可以解析为已知高度。滚动条的大小适当。可视树中的父容器必须能够解析为实际高度,并且如果将RowDefinition的高度设置为auto或fixed,则这发生在网格中。

这也发生在Silverlight中。

-em-