在对象生命周期的什么时间第一次解析绑定?
这是一个简单的问题,但我在书籍和谷歌上都找不到任何信息。
其实事情没那么简单,你不会得到这个问题的直接答案。这取决于上下文。
这是两个简单的例子:
如果有界属性由不在 ControlTemplate 内的 WPF 控件拥有,则绑定很可能在第一次解析时被解析。更新布局如果 DataContext 已设置,则首次调用方法。
如果未设置 DataContext,它将在加载控件后尝试解析:请参阅下面的 DataBindEngine.RequestRun()
private void RequestRun()
{
base.Dispatcher.BeginInvoke(DispatcherPriority.DataBind, new DispatcherOperationCallback(this.Run), false);
base.Dispatcher.BeginInvoke(DispatcherPriority.Loaded, new DispatcherOperationCallback(this.Run), true);
}
但是,如果有界属性由 ControlTemplate 内的 WPF 控件拥有,则它将在第一次布局过程中首次解析,从而触发应用模板并导致解决绑定。
这些只是具体的例子,如果你想完全理解绑定机制,你应该使用 Reflector 来看看MS.Internal.Data.DataBindEngine
and System.Windows.Data.BindindExpression
类。这些类负责在使用依赖属性上的绑定时推送正确的数据。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)