【发布时间】:2013-08-06 18:38:45
【问题描述】:
我自己没有时间对此进行全面测试,我希望其他人可能已经知道使用控件的属性与样式定义控件的外观是否有任何性能和/或内存优势(反之亦然)。
选项#1:
<Border Background="White" BorderBrush="Black" BorderThickness="2" CornerRadius="20">
...
</Border>
选项#2:
<Style x:Key="BorderStyle" TargetType="Border">
<Setter Property="Background" Value="White"/>
<Setter Property="BorderBrush" Value="Black"/>
<Setter Property="BorderThickness" Value="2"/>
<Setter Property="CornerRadius" Value="20"/>
</Style>
<Border Style="{StaticResource BorderStyle}">
...
</Border>
请注意,我不是在询问可重用性,因为我了解这些好处。我特别想知道特定于给定控件且未重用的“一次性”样式。
另一个例子是我有第二个带边距的边框。让 Border 使用与上述相同的样式并直接设置 Margin 属性会更高性能并且需要更少的内存,还是我应该使用新的设置器基于第一个 Style 资源创建第二个 Style 资源?
【问题讨论】:
-
查看优先级设置值列表(link),我们发现
Local value比Style setters(第8位)排在第一位(第3位)。因此,通过在本地设置值,这些值的设置速度会比其他来源的值快一点。 -
我认为更好的术语是说它们设置得“更快”而不是“更快”。
-
优先级列表没有对 when 属性值的实际设置做出任何声明。它只是列出了优先顺序,仅此而已。
-
请记住,我不能将 cmets 标记为答案...
标签: wpf wpf-controls wpf-4.0