如何让一系列 IEnumerable 对象看起来像 Windows Phone 7 中的一个大堆栈面板?

发布于 2024-11-15 13:54:43 字数 178 浏览 4 评论 0原文

对于这个例子,我有一个 IList<>包含一组也是列表的对象。例如,一个联赛由一组球队组成,而这些球队又由球员组成。我想要的是一个只有一个滚动条的列表。

我尝试过嵌套的 ListBox 控件,但最终变成了一堆表现可怕的多个滚动条。滚动功能很糟糕,它似乎隐藏了球队球员列表的底部。

任何帮助都会很棒!

I have, for this example, an IList<> that contains a set of objects that are also lists. for example, a league consists of a set of teams and those teams are comprised of players. What I want is a single list that has one scrollbar.

I have tried nested ListBox controls but that ends up being a stack of multiple scrollbars that acts horrible. Scrolling is just bad and it seems to hide the bottom of the team's player list.

Any help would be great!!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

爺獨霸怡葒院 2024-11-22 13:54:43

为什么不使用 ItemsControl 而不是 ListBoxListBox 提供选择,如果您不需要它,ItemsControl更轻量且加载速度更快。此外,通过 ItemsControl,您可以完全控制托管项目的元素。这样,您就可以省略 ScrollViewer

要渲染您的项目,请尝试以下操作:

<ItemsControl ItemsSource={Binding League.Teams}>
  <!-- use a StackPanel to host your elements -->
  <ItemsControl.ItemsPanel>
    <ItemsPanelTemplate>
      <StackPanel Orientation="Vertical"/>
    </ItemsPanelTemplate>
  </ItemsControl.ItemsPanel>
  <!-- render each team -->
  <ItemsControl.ItemTemplate>
    <DataTemplate>
      <!-- render each player within the team -->
      <ItemsControl ItemsSource={Binding Players}>
        <ItemsControl.ItemsPanel>
          <ItemsPanelTemplate>
            <StackPanel Orientation="Vertical"/>
          </ItemsPanelTemplate>
        </ItemsControl.ItemsPanel>
        <ItemsControl.ItemTemplate>
          <DataTemplate>
            <!-- render the player's name -->
            <TextBlock Text="{Binding Name}"/>
          </DataTemplate>
        </ItemsControl.ItemTemplate>
      </ItemsControl>
    </DataTemplate>
  </ItemsControl.ItemTemplate>
</ItemsControl>

Rather than a ListBox, why not use an ItemsControl? A ListBox provides selection, if you do not need this, an ItemsControl is more lightweight and will load faster. Also, with an ItemsControl you have full control over the elements that host your items. This way, you can omit the ScrollViewer.

To render your items, try the following:

<ItemsControl ItemsSource={Binding League.Teams}>
  <!-- use a StackPanel to host your elements -->
  <ItemsControl.ItemsPanel>
    <ItemsPanelTemplate>
      <StackPanel Orientation="Vertical"/>
    </ItemsPanelTemplate>
  </ItemsControl.ItemsPanel>
  <!-- render each team -->
  <ItemsControl.ItemTemplate>
    <DataTemplate>
      <!-- render each player within the team -->
      <ItemsControl ItemsSource={Binding Players}>
        <ItemsControl.ItemsPanel>
          <ItemsPanelTemplate>
            <StackPanel Orientation="Vertical"/>
          </ItemsPanelTemplate>
        </ItemsControl.ItemsPanel>
        <ItemsControl.ItemTemplate>
          <DataTemplate>
            <!-- render the player's name -->
            <TextBlock Text="{Binding Name}"/>
          </DataTemplate>
        </ItemsControl.ItemTemplate>
      </ItemsControl>
    </DataTemplate>
  </ItemsControl.ItemTemplate>
</ItemsControl>
萌︼了一个春 2024-11-22 13:54:43

您可以非常轻松地禁用列表框的滚动条。只需将 ScrollViewer.VerticalScrollBarVisibility="Disabled" 添加到内部 ListBox 的 XAML 属性即可。

You can disable scrollbars for a ListBox quite easily. Just add ScrollViewer.VerticalScrollBarVisibility="Disabled" to the XAML attributes for the inner ListBox.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文