Wpf 如何使用“更多…”项(也称为分页控制)实现非滚动项控制?

Wpf 如何使用“更多…”项(也称为分页控制)实现非滚动项控制?,wpf,xaml,scroll,itemscontrol,Wpf,Xaml,Scroll,Itemscontrol,我需要一个实现ItemsControl常规功能的控件,该控件具有以下行为: 如果要显示的项目数量不适合可用空间,则不显示滚动条,而是将显示的项目数量减少到可以容纳的数量,同时将可用空间留给更多。。。或元素。 当项目数量足够小时,则更多。。。部分变为不可见。因此,如果动态调整控件大小,则。。。节将显示或消失,具体取决于大小 我不需要一个完整的解决方案,只需要一个方向,但我更喜欢符合WPF精神的东西,尽可能多地利用布局引擎。 另外,如果您碰巧知道现有的解决方案,那也很好。在WPF和Silverlig

我需要一个实现ItemsControl常规功能的控件,该控件具有以下行为:

如果要显示的项目数量不适合可用空间,则不显示滚动条,而是将显示的项目数量减少到可以容纳的数量,同时将可用空间留给更多。。。或<>元素。 当项目数量足够小时,则更多。。。部分变为不可见。因此,如果动态调整控件大小,则。。。节将显示或消失,具体取决于大小

我不需要一个完整的解决方案,只需要一个方向,但我更喜欢符合WPF精神的东西,尽可能多地利用布局引擎。
另外,如果您碰巧知道现有的解决方案,那也很好。

在WPF和Silverlight中,ItemsControl可以使用VirtualzingPanel子类,该子类可按需创建UIElements。如果您实现自己的子类,而不是使用VirtualzingStackPanel(例如,它实现了IScrollInfo接口),那么您可以在MeasureOverride方法中完成,您可以使用尽可能多的项目填充可视区域,并放置一个更大的。。。元素在末尾

关于实现您自己的VirtualzingPanel和IScrollInfo,有一些不错的博客帖子,但首先,Dan Crevier有一系列关于实现VirtualzingTilePanel的文章:

在他的第四篇文章(他最后一篇文章)中,他有一个下载源代码的链接,你可能会发现它很有用

然后是本·康斯特布尔在IScrollInfo上的博客系列

在过去的一周里,我一直在使用这两种资源来帮助我在Moonlight中实现VirtualzingPanel和VirtualzingStackPanel类,这是另一种资源,如果你不怕使用Subversion抓取,你可以随意查看svn://anonsvn.mono-project.com/source/trunk/moon. 您可以在moon/class/System.Windows/System.Windows.Controls/virtualzingstackpanel.cs下找到我的virtualzingstackpanel实现


希望能有所帮助。

在WPF和Silverlight中,ItemsControl可以使用VirtualzingPanel子类按需创建UIElements。如果您实现自己的子类,而不是使用VirtualzingStackPanel(例如,它实现了IScrollInfo接口),那么您可以在MeasureOverride方法中完成,您可以使用尽可能多的项目填充可视区域,并放置一个更大的。。。元素在末尾

关于实现您自己的VirtualzingPanel和IScrollInfo,有一些不错的博客帖子,但首先,Dan Crevier有一系列关于实现VirtualzingTilePanel的文章:

在他的第四篇文章(他最后一篇文章)中,他有一个下载源代码的链接,你可能会发现它很有用

然后是本·康斯特布尔在IScrollInfo上的博客系列

在过去的一周里,我一直在使用这两种资源来帮助我在Moonlight中实现VirtualzingPanel和VirtualzingStackPanel类,这是另一种资源,如果你不怕使用Subversion抓取,你可以随意查看svn://anonsvn.mono-project.com/source/trunk/moon. 您可以在moon/class/System.Windows/System.Windows.Controls/virtualzingstackpanel.cs下找到我的virtualzingstackpanel实现

希望有帮助