首页 文章

ListBox与ItemTemplate(和ScrollBar!)

提问于
浏览
33

我有一个数据绑定和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>

它显示很好,它们来自ObservableCollection .

problemscrollbar ,它出现但不可用 - 它没有抓取的句柄 . 我已经尝试在ListBox上设置一些ScrollView附加属性,但它们不会影响这种情况 .

4 回答

  • 5

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

    如果删除 ScrollViewer.VerticalScrollBarVisibility="Visible" ,则只有在需要时才会显示滚动条 .

  • 0

    ListBox将尝试扩展可用的高度 . 当您设置ListBox的Height属性时,您将获得一个实际工作的scrollviewer ...

    如果您希望ListBox符合可用高度,您可能希望尝试从父控件调节高度 . 例如,在Grid中,在RowDefinition中将Height设置为Auto可能会有所帮助......

    HTH

  • 31

    我从来没有幸运任何可放置在堆叠面板内的可滚动内容(任何从ScrollableContainer派生的内容 . stackpanel有一个奇怪的布局机制,当测量操作完成时会混淆子控件,我发现垂直尺寸最终无限,因此不受约束 - 因此它超出了容器的边界并最终被剪切 . 滚动条没有显示,因为控件认为它没有世界上的所有空间 .

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

    这也发生在Silverlight中 .

    -em-

  • 9

    谢谢回答 . 我自己也尝试了空项目 - 看到天堂和七海的全能创造者 - 它起作用了 . 我最初的ListBox里面是root . 由于某种原因,ListBox根本不喜欢在StackPanel内部! =)

    -pom-

相关问题