在Windows运行时使用WP8.1应用程序。
我在DataTemplate中为ListViews定义了一个大的UserControl -
<DataTemplate x:Key="ListItemTemplate">
<listItems:ListItemControl />
</DataTemplate>
使用的是 -
<ListView x:Name="List"
ItemTemplate="{ThemeResource ListItemTemplate}"
ShowsScrollingPlaceholders="True"
SelectionMode="None"
ContainerContentChanging="ListOnContainerContentChanging"
ScrollViewer.VerticalScrollBarVisibility="Auto" />
与直接在DataTemplate中布置所有项目相比,这会产生任何负面的性能影响吗?
我已经读过,由于每次都必须处理UserControl xaml,因此使用UserControl与模板化控件的性能差异很大。我不确定在这种情况下它是否只需处理一次,因为它位于DataTemplate中。
答案 0 :(得分:1)
我查看此问题的答案,以便比较UserControl
和模板控件:
When to use a templated control over a UserControl?
除此之外 - YMMV。对于性能,第一条规则是不要过早优化,因此除非遇到问题,否则您可能不必担心。第二个规则是进行测量 - 找到要比较的基线。第三是如果你想知道要改进什么,要进行剖析以找出究竟什么是慢的。
在许多情况下 - 您使用哪种方法真的很重要。有人说模板通常只解析一次,而每个UserControl
实例都需要反复加载XAML(或XBF)。
答案 1 :(得分:0)
毫无疑问,UserControl会降低性能。我在Microsoft的项目上为Microsoft工作,但由于性能问题,我们没有使用UserControl。我已经阅读了由于性能而从UserControl转换的组的位置。我建议避免UserControl的设计很简单。如果你没有任何性能问题我会说继续使用Usercontrol,因为使用UserConstrols比使用直接datatemplats更容易。