【问题标题】:How to get item's height after is has been created?创建后如何获取项目的高度?
【发布时间】:2014-09-09 20:02:30
【问题描述】:

我想用适合当前页面的项目填充ListView,这样我就不必滚动了。为此,我想添加一个项目,检查它的高度,如果它太大而无法容纳剩余的空间,我想删除它。

我的问题是:

  1. 有没有更聪明的方法来解决这个问题?
  2. 何时查看已实现的物品高度?

在 Windows 8.1 中,ListView 控件没有ItemRealizedItemCreated 事件。那么什么时候检查物品的容器大小呢?

我尝试通过

获取尺寸
UIElement container = (UIElement)ItemsListView.ContainerFromItem(obj);
double height = container.DesiredSize.Height;

感谢您的帮助!

【问题讨论】:

  • 您的意图是基本上想要一个分页集合(例如 100 个项目,每页显示 10 个项目 @ 10 页),还是明确只想要一个 ListView?
  • 你说得对,目的是实现分页。但是我的项目可以有不同的高度,这样可能会发生在第一页上有 3 个项目,在第二个页面上有 5 个项目,依此类推......
  • 由于大小不同,您可能需要在 View 的代码中管理自己的活动列表/页面。 ActualHeight 属性将有助于确定可用的容器大小和我认为的项目的大小。

标签: c# wpf xaml windows-8


【解决方案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 的分页的非常好的文章。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-02-10
    • 2016-12-10
    • 2011-03-22
    • 1970-01-01
    • 1970-01-01
    • 2011-10-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多