C# 多个自定义控件会影响控件可见性
好的,这将是一个1000英尺长的问题,但有很多内容需要涵盖,所以这里是: 我正在创建一个分页项目控件,其目的是以分页格式显示非常大的集合。我已经在GitHub上创建了一个可以找到的存储库。为了简单起见,我删除了任何样式 启动应用程序时,它看起来如下所示: 这非常简单,有导航按钮,每页有一个项目选择器,但这并不重要。单击按钮“打开新窗口”时出现问题 这将打开一个新的C# 多个自定义控件会影响控件可见性,c#,wpf,xaml,custom-controls,C#,Wpf,Xaml,Custom Controls,好的,这将是一个1000英尺长的问题,但有很多内容需要涵盖,所以这里是: 我正在创建一个分页项目控件,其目的是以分页格式显示非常大的集合。我已经在GitHub上创建了一个可以找到的存储库。为了简单起见,我删除了任何样式 启动应用程序时,它看起来如下所示: 这非常简单,有导航按钮,每页有一个项目选择器,但这并不重要。单击按钮“打开新窗口”时出现问题 这将打开一个新的主窗口,但在第一个窗口中,集合将消失,如下所示: 上图显示了前面的旧窗口,如您所见,新窗口中没有内容列表 所以,在我的头撞在墙上
主窗口
,但在第一个窗口中,集合将消失,如下所示:
上图显示了前面的旧窗口,如您所见,新窗口中没有内容列表
所以,在我的头撞在墙上几个小时后,我需要帮助。我将概述项目的结构 anagrampagedItemControl 用于显示内容的控件是一个名为
anagrampagedItemControl
的自定义控件,它负责处理页面之间的导航。我认为这里的关键属性是PagedCollection
PagedCollection
依赖项属性保存绑定到TestItemsViewModel
中的Models
属性的集合
测试项目视图模型
这是main窗口的DataContext
,每个窗口实例都应该创建自己的视图模型。CreateTestItems()
方法负责创建测试项列表
LazyPagedCollection
此集合的目的是封装分页可观察集合的逻辑,它仅在需要时加载页面,因此具有惰性
它公开了NextPage
等方法,当用户单击各种导航按钮时,这些方法在anagrampageditmcontrol
中调用。视图模型还可以在LazyPagedCollection
上调用导航,这允许视图模型调用导航,而无需通过视图来执行
TL;DR
创建新的窗口时,上一个窗口的内容将消失。问题几乎可以肯定是与控制,但我被困在如何解决问题
这是一个相当大的问题,所以我非常感谢任何能够研究它的人。同样,源代码是,请随意提出替代方案或选择我可能忽略的任何内容。有时间,因此:
问题在于generic.xaml
中anagrampagedItemControl
样式中的CollectionView
属性的setter
这不会在每次应用样式时实例化新的列表框
;它只会在第一次创建样式时创建一个列表框
,并反复使用该值。因此实际上,MainWindow
的每个实例都共享相同的ListBox
您可以通过在设置绑定(ItemsControl PART\u CollectionView)
中将PART\ucode>CollectionView的标记设置为(例如)“1”来查看这一点。当您打开一个新窗口时,您将看到PART\u CollectionView.Tag
包含与先前指定的值相同的值 这也让我困惑了一段时间。我不喜欢被迷惑:)