如何解决如何存储加载的View,以便在到达同一View时无需再次初始化组件
实际上我有两个按钮。当我单击第一个按钮时,一个UserControl将在ContentControl中可见,而当我单击第二个按钮时,另一个UserControl将出现并位于ContentControl中。问题是,每当我单击按钮时,它将加载特定的UserControl-> InitializeComponent()方法。我只想在一开始只加载一次View,而不是每次从一个UserControl切换到另一个UserView时都加载。 非常感谢!
解决方法
您有几种选择。
一本字典就是一本。
Dictionary<Type,UserControl> MyControls
您可以检查是否已有实例:
MyControls.ContainsKey(TypeOfUserControl);
并使用您已经拥有的实例,如果没有实例,则新建一个实例。当然要添加到字典中。
此词典可以保存在依赖项注入容器中,也可以是静态的,因此您可以随时随地引用它。或者也许您关心的所有用户控件都在一个地方实例化。
您可以选择使用依赖项注入,并使所有用户控件都成为单例。
确切的语法取决于您使用哪个DI容器,但对于Microsoft而言:
services.AddSingleton<YourUserControl>();
如果这特别有问题(出于我无法想象的原因),则可以使用惰性实例化模式来使用户控件有效地保持静态。
https://csharpindepth.com/articles/singleton#lazy
或者也许这实际上是一个代码中的两个用户控件,而您只需缓存两个私有变量即可。
注意:
我想知道您在初始化时在做什么。
常见的模式是先使用viewmodel,然后将viewmodel实例呈现给视图并模板化到UI中。在这种情况下,初始化逻辑将在该视图模型中。这种方法可能只是改变您正在字典或依赖项注入容器中缓存的事物的类型。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。