ListView性能中的UserControls与TemplatedControl

时间:2015-04-16 17:13:12

标签: c# xaml windows-runtime

在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中。

2 个答案:

答案 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更容易。