创建后如何获取项目的高度?
Posted
技术标签:
【中文标题】创建后如何获取项目的高度?【英文标题】:How to get item's height after is has been created? 【发布时间】:2014-09-09 20:02:30 【问题描述】:我想用适合当前页面的项目填充ListView
,这样我就不必滚动了。为此,我想添加一个项目,检查它的高度,如果它太大而无法容纳剩余的空间,我想删除它。
我的问题是:
-
有没有更聪明的方法来解决这个问题?
何时查看已实现的物品高度?
在 Windows 8.1 中,ListView
控件没有ItemRealized
或ItemCreated
事件。那么什么时候检查物品的容器大小呢?
我尝试通过
获取尺寸UIElement container = (UIElement)ItemsListView.ContainerFromItem(obj);
double height = container.DesiredSize.Height;
感谢您的帮助!
【问题讨论】:
您的意图是基本上想要一个分页集合(例如 100 个项目,每页显示 10 个项目 @ 10 页),还是明确只想要一个 ListView? 你说得对,目的是实现分页。但是我的项目可以有不同的高度,这样可能会发生在第一页上有 3 个项目,在第二个页面上有 5 个项目,依此类推...... 由于大小不同,您可能需要在 View 的代码中管理自己的活动列表/页面。 ActualHeight 属性将有助于确定可用的容器大小和我认为的项目的大小。 【参考方案1】:不幸的是,除了 TabControl 之外,我不相信有内置的分页集合解决方案,这可能不是您想要的。
分页通常应该在视图模型/业务方面完成,所以如果你提前知道对象的大小,你可以做这样的事情How to paginate an ObservableCollection?或MVVM paging & sorting,为视图提供正确数量的项目。
如果需要更加动态和灵活,这是一篇关于使用WrapPanel
作为ItemsControl
http://imduff.blogspot.com/2008/02/this-is-way-how-i-implemented-paging.html 的ItemsPanel 的分页的非常好的文章。
【讨论】:
以上是关于创建后如何获取项目的高度?的主要内容,如果未能解决你的问题,请参考以下文章