以下哪些 TextBlocks 的绑定会消耗更多性能:
<Window
x:Name="Me"
x:Class="MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:src="clr-namespace:WpfApplication1"
Title="MainWindow">
<StackPanel>
<TextBlock Text="{Binding Title, ElementName=Me}"/>
<TextBlock Text="{Binding Title, RelativeSource={RelativeSource AncestorType={x:Type src:MainWindow}}}"/>
</StackPanel>
</Window>
我确信当 TextBlocks 处于具有许多兄弟姐妹和祖先的高嵌套级别时,我的问题可能会有所不同。
注意事项
(仅基于个人想法,我可能在每个特定的地方都错了!):
ElementName
:- 可能会搜索并比较当前元素以进行更多控制,通过它的所有孩子、兄弟姐妹、叔叔和叔叔,包括祖先(也许有一个所有注册名称的哈希表?)
- 获取
Name
控件的属性应该比调用更少的性能GetType
。 - 比较字符串比比较类型便宜,尤其是当您知道大多数控件甚至没有
Name
设置时。
FindAncestor
:- 只会遍历祖先,而不是兄弟姐妹“叔叔”、“堂兄弟”等。
- 最有可能用于
GetType
确定祖先类型;GetType 比简单的属性 getter 花费更多的性能Name
(也许 DP 不同?)