我想知道在数据绑定中,是否重复使用子路径与只绑定DataContext并在绑定中指定相对路径有什么区别。
举例:
绝对路径:
<UserControl x:Name="uc"/>
<StackPanel>
<TextBox Text="{Binding ViewModel.Prop1, ElementName=uc}" />
<TextBox Text="{Binding ViewModel.Prop2, ElementName=uc}" />
</StackPanel>
</UserControl/>
相对路径:
<UserControl x:Name="uc"/>
<StackPanel DataContext="{Binding ViewModel, ElementName=uc}">
<TextBox Text="{Binding Prop1}" />
<TextBox Text="{Binding Prop2}" />
</StackPanel>
</UserControl/>
我知道两种方法都绑定了相同的属性,但我对背后真正发生的事情很感兴趣,因为这可能会影响性能,在有多个绑定的情况下更加明显。使用绝对路径的变量是否会导致更多的“事件流量”,因为每个文本绑定都观察ViewModel属性及其特定属性? 还是完全相同?我可以想象一些BindingManager解析所有绑定路径,使得两种变体最终在IL中完全相同。
如果绑定层次结构的结构确实有影响: 除代码风格偏好之外,使用每个绑定中的完整路径的“较慢”方法是否有任何积极效果?