Wpf 何时应用数据绑定?

Wpf 何时应用数据绑定?,wpf,data-binding,Wpf,Data Binding,在对象生命周期的什么时候第一次解析绑定 这是一个简单的问题,但我在书中或谷歌上都找不到任何信息。其实并不是那么简单,你不会得到这个问题的直接答案。这取决于上下文 以下是两个简单的例子: 如果bounded属性由不在ControlTemplate内的WPF控件拥有,则在第一次调用该方法时,如果已经设置了DataContext,则很可能会第一次解析绑定。 如果未设置DataContext,则在加载控件后将尝试解析它:请参阅下面的DataIndengine.RequestRun() 但是,如果boun

在对象生命周期的什么时候第一次解析绑定


这是一个简单的问题,但我在书中或谷歌上都找不到任何信息。

其实并不是那么简单,你不会得到这个问题的直接答案。这取决于上下文

以下是两个简单的例子:

如果bounded属性由不在ControlTemplate内的WPF控件拥有,则在第一次调用该方法时,如果已经设置了DataContext,则很可能会第一次解析绑定。 如果未设置DataContext,则在加载控件后将尝试解析它:请参阅下面的DataIndengine.RequestRun()

但是,如果bounded属性归ControlTemplate内的WPF控件所有,则它将在第一次布局过程中首次解析,该过程将触发并导致解析绑定

这些只是具体的例子,如果您想完全理解绑定机制,应该使用reflector查看
MS.Internal.Data.DataBindEngine
System.Windows.Data.bindinexpression
类。这些类负责在依赖属性上使用绑定时推送正确的数据

private void RequestRun()
{
    base.Dispatcher.BeginInvoke(DispatcherPriority.DataBind, new DispatcherOperationCallback(this.Run), false);
    base.Dispatcher.BeginInvoke(DispatcherPriority.Loaded, new DispatcherOperationCallback(this.Run), true);
}