【问题标题】:Hide overflowing items in a Panel隐藏面板中溢出的项目
【发布时间】:2014-08-20 09:22:58
【问题描述】:

我有一个VirtualizingStackPanel,其中包含来自ItemsSource 的项目。项目多于空间显示VirtualizingStackPanel中的所有项目。

示例:我有 5.3 件物品的空间,但我有 7 件物品。现在我希望VirtualizingStackPanel 显示 5 个项目并隐藏其余项目。

问题:面板显示 6 个项目。最后一项溢出了。

在这种情况下是否可以仅显示 5 个项目(= 没有溢出项目),仅使用 XAML?

我的 StackPanel 的当前代码:

<ItemsControl ItemTemplate="{StaticResource rpTemplate}" ItemsSource="...">
  <ItemsPanelTemplate>
    <VirtualizingStackPanel Orientation="Vertical" />
  </ItemsPanelTemplate>
</ItemsControl>

还有我的数据模板:

<DataTemplate x:Key="rpTemplate">
  <Label Content="{Binding Name}" HorizontalAlignment="Left" />
</DataTemplate>

不一定是VirtualizingStackPanel,可以是 StackPanel、DockPanel 等等,只要我能列出项目即可。

【问题讨论】:

  • 您可以声明一个自定义 Panel 来为您执行此操作,但创建自定义虚拟化 Panels 不适合虚心。
  • @Sheridan 我也可以使用自定义Panel(更新了我的问题)。你能多解释一下存档这种面板需要哪些步骤吗?
  • 不幸的是,这与本网站无关,因为它太宽泛太复杂了。 WPF Control Development Unleashed 一书中有一个很好的章节介绍了它,但不幸的是,他们以前提供的在线版本不再可用。
  • 我记得不久前回答过非常相似的问题。这个问题对你有帮助吗? Virtualizing Panel that doesn't crop items
  • @Rachel:我目前正在解决我的问题,您的解决方案正在帮助我,谢谢。我正在使用附加属性研究一些不同的方法。

标签: c# wpf xaml


【解决方案1】:

我找到了 3 个解决方案:

第一个(在 cmets 中由 Rachel 提到)是using a converter

第二个(我发现这是最简单的):make a new class inherited from my Panel and use that

我尝试了第三种解决方案,并找到了Blend behaviors的解决方案

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-19
    • 1970-01-01
    相关资源
    最近更新 更多