好的,所以我创建了一个自定义按钮控件,它有一个关联的xaml文件。我的另一个选择是没有关联的xaml文件,只需在外部定义按钮的样式(在Generic.xaml中)。
使用前一种方法时,是否为我创建的每个按钮实例创建了附加的xaml文件的新实例?或者系统是否足够智能,只需创建该xaml数据的单个实例并将其用于每个按钮?
答案 0 :(得分:2)
对于您创建的每个控件实例,控件的XAML树都会在两种情况下重新构建。您可以通过将一个自定义控件输出到其构造函数中的调试控制台来验证这一点。如果将其放在具有XAML的自定义控件的模板或内容中,则在两种情况下都会在创建新实例时创建新实例。
然而,在ListView
情况有点不同 - 它具有虚拟化功能并重用其项目,因此一旦加载了足够的项目进行显示和一些用于滚动的缓冲区,它就会不断用数据更新现有实例 - 约束值。
答案 1 :(得分:0)
在这些情况下,UserControls和TemplatedControls的行为有所不同。 UserControls每次创建时都会解析它们的XAML。 TemplatedControls(通常使用genetic.xaml)仅在第一次创建任何控件实例时解析其XAML,因此在技术上应该更有效。