【发布时间】:2017-12-17 13:07:14
【问题描述】:
在我的 WPF 应用程序中,我有很多 XAML,所以我对在 WPF 中使用 ResourceDictionary 有点困惑,使用它是让我的应用程序禁食还是减慢它。
EX:假设我们有一个 TextBlock 的以下样式,我们想将它应用到我的应用程序中的许多 TextBlock 中:
<Style TargetType="{x:Type TextBlock}" x:Key="MainText">
<Setter Property="FontSize" Value="12" />
<Setter Property="Height" Value="20" />
<Setter Property="FontWeight" Value="Bold" />
<Setter Property="FontFamily" Value="Droid Arabic Kufi" />
<Setter Property="Foreground" Value="#FF383838"/>
<Setter Property="HorizontalAlignment" Value="Center"/>
</Style>
什么是我的应用程序性能的最佳方法,像上面一样在 ResourceDictionary 中声明样式并使用如下:
<TextBlock Style="{StaticResource MainText}" Text="Hello"/>
或者在每个中重复样式(FontWeight、FontFamily、Foreground ...)?
提前致谢
【问题讨论】:
-
不应该有明显的性能差异。这只是为了方便(不必手动重新应用每个控件上的所有属性)
-
但是如果你真的想知道,手动设置所有属性在启动时可能会稍微快一些(因为你删除了一个间接级别)。一旦控件加载完毕,应该不会再有区别了(因为所有属性的值都已解析)
-
性能上不会有任何明显的差异(如果有的话)。但是,在样式中设置一次属性并将该样式用于许多控件会显着改善应用程序设计。
-
实际上,资源字典可以成为你最好的朋友,因为一旦只用作应用程序资源,将给你最好的性能和内存消耗,但你需要使用 ResourceKey 来获得。但是,如果您有大量的字典,最终会导致速度变慢并占用更大的内存。
-
@AlexSeleznyov 请您提供有关 ResourceKey 的更多详细信息吗?提前致谢
标签: c# wpf xaml resourcedictionary staticresource