C#学习教程:UWP中的模板控件和自定义控件。关于UWP中模板控件和自定义控件的共享,在网上找不到明确的答案。在网上找不到明确的答案在我的UWP应用程序中,我的控件选项是UserControl和TemplateControl。在这一点上,我对用户控件的理解非常清楚。有人告诉我,自定义控件的样式/模板仅在内存中实例化一次,并且这仅在首次使用该控件时发生。这就是我想要的,因为我知道我正在创建的控件将在ListView中使用。然而,在本书XAMLUnleashed中,作者通过从用户控件开始然后简单地更改其基类来创建自定义控件。问题是他创建的控件调用了InitializeComponent()。我听说这个类使用更多内存,因为它为ListView中的每个项目重新实例化。此外,我从未想过自定义控件使用InitializeComponent()方法。我以为它只是调用this.DefaultStyleKey=typeof(MyClass);在构造函数中。是什么赋予了?我很困惑什么是……最后,为什么模板控件的样式/模板放在全局Generic.xaml文件中,而不是它自己的单独文件(即xaml文件和代码隐藏文件对)?如果控件应该是自定义的和“可移植的”,它不应该与代码的其余部分完全分开吗?我还没有找到任何详细解释这些内容的文章。这是大多数人弄错的地方,所以我会尽力为您解决问题。记忆整个记忆的东西,都在可视化树中。当您实例化任何控件时,无论它是模板UserControl还是UserControl,您都会在每个实例中使用内存,因为在这两种情况下您都在模板中创建可视组件的完整副本。模板化控件将从ControlTemplate创建一个副本,而UserControl在调用InitializeComponent()时解析XAML文件。如果您创建100个模板化控件或100个用户控件(如果它们的内容相同),则内存使用量将相同。用法模板化控件最适合创建单个组件(例如Button、Slider、MyStarRatingInput等)的情况,并且您为控件的用户提供了用自己的模板替换模板的能力。比UserControls需要更多的努力,因为逻辑必须与模板无关,并且模板必须对视觉状态的变化做出正确反应。UserControl最适用于布局或视图,如表单、弹出窗口、屏幕、页面等。你不会给别人篡改视图内容的自由。如果某些视图可以以较小的方式重用,则可以公开一些公共/依赖属性,但通常它们是不可变的。Generic.xaml老实说,我没有答案。微软应该允许多个资源字典来实现更清晰的控制模板分区。Generic.xaml是一个保留文件名,引用的项目将查找该文件名作为控件基本样式的根。您可以从Generic.xaml引用其他XAML文件,但这很烦人,并且会使资源字典的根目录膨胀。现在,您仍然坚持使用这种方法。建议如果要共享控件库,则需要尽可能使用模板化控件。如果您正在为当前项目构建控件、视图、页面等,并且它们不打算重用,那么请使用UserControls。如果您计划拥有模板并强制所有用户接受您的设计,您仍然可以在控件库中创建UserControl。对于计划在单个视图中实例化一百次的项目,我还建议使用ListView等模板控件。如果将模板预加载到内存中而不是在每个实例上解析XAML文件,您将看到明显的速度提升。以上就是C#学习教程:UWP中的模板控件和自定义控件。我在网上找不到明确的答案。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理会员删除。如需转载请注明出处:
