gpt4 book ai didi

c# - WPF 绑定(bind)路径是否已在后台规范化?

转载 作者:行者123 更新时间:2023-11-30 16:31:04 24 4
gpt4 key购买 nike

我只是想知道这是否有任何区别,如果我在每个绑定(bind)中重复某个属性的子路径,或者如果我绑定(bind) DataContext 并仅在绑定(bind)中声明相对路径。

例子:

绝对路径:

<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/>

我确实知道两者都绑定(bind)了相同的属性,但我对幕后真正发生的事情很感兴趣,因为这可能会在绑定(bind)超过 2 个的情况下影响性能。具有绝对路径的变体是否会导致更多的“事件流量”,因为每个文本绑定(bind)都观察 ViewModel 属性及其特定属性?还是会完全一样?我可以想象一些 BindingManager 解析所有绑定(bind)路径,s.th。两种变体最终都在完全相同的 IL 中。

如果绑定(bind)层次结构确实有影响:在每个绑定(bind)中使用具有完整路径的“较慢”方法是否有任何积极影响(除了代码样式首选项之外)?

最佳答案

一旦绑定(bind)对象被实例化,创建它的标记有多复杂都无关紧要;该对象包含对源属性的引用,如何找到该引用不再相关。因此,以一种方式执行此操作的唯一性能影响是在实例化绑定(bind)本身时。

不重复自己不仅不会(不知不觉地)表现得更好,而且是正确的方法。 DRY principle就像适用于任何其他类型的软件开发一样适用于 XAML。

关于c# - WPF 绑定(bind)路径是否已在后台规范化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5099135/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com