【发布时间】:2015-11-20 09:46:46
【问题描述】:
好的,这将是一个 1000 英尺长的问题,但要涵盖的内容很多,所以这里是:
我正在创建一个分页项控件,其目的是以分页格式显示非常大的集合。我在 GitHub 上创建了一个存储库,可以找到 here。为简单起见,我删除了所有样式。
在启动应用程序时,它看起来像这样:
这真的很简单,有导航按钮,每页项目选择器,但这并不重要。 问题是当您单击按钮“打开新窗口”时。
这将打开一个新的MainWindow,但在第一个窗口中,集合消失,如下所示:
上图显示了前面的旧窗口,如您所见,没有新窗口上的内容列表。
因此,在将我的头撞到墙上几个小时后,我需要帮助。我将概述项目的结构。
AnagramPagedItemsControl
用于显示内容的控件是一个名为AnagramPagedItemsControl的自定义控件,它负责处理页面之间的导航。我认为这里的关键属性是PagedCollection。
PagedCollection 依赖属性包含绑定到TestItemsViewModel 中的Models 属性的集合。
TestItemsViewModel
这是MainWindow 中的DataContext,每个窗口实例都应该创建自己的视图模型。 CreateTestItems() 方法负责创建测试项列表。
LazyPagedCollection
这个集合的目的是封装分页的可观察集合的逻辑,它只在需要时加载页面,因此很懒。
当用户点击各种导航按钮时,它会公开NextPage 等方法,这些方法在AnagramPagedItemsControl 中调用。视图模型也可以在LazyPagedCollection 上调用导航,这允许视图模型调用导航而无需通过视图来进行。
TL;DR
当我创建一个新的Window 时,前一个窗口的内容消失了。问题几乎肯定出在控件上,但我不知道如何解决这个问题。
这是一个相当大的问题,所以我会非常感谢任何可以调查它的人。同样,源代码是here,请随时提出替代方案或挑出我可能忽略的任何内容。
【问题讨论】:
标签: c# wpf xaml custom-controls