1
我想了解更多關於winforms的生命週期。我知道BindingContextChanged
事件將該窗體的Visible
屬性設置爲true。但我想知道,哪種語境與表單綁定?什麼觸發BindingContextChanged
,以便將窗體屬性Visible
設置爲true?C#上下文綁定到窗體時加載窗體?
我想了解更多關於winforms的生命週期。我知道BindingContextChanged
事件將該窗體的Visible
屬性設置爲true。但我想知道,哪種語境與表單綁定?什麼觸發BindingContextChanged
,以便將窗體屬性Visible
設置爲true?C#上下文綁定到窗體時加載窗體?
我不知道BindingContext
和Visible
,但一般每個窗體不僅僅是獲得了一個新的BindingContext
之間的緊密相關性。如果你需要在不同的控件之間做一些獨立的綁定上下文,那麼你可以通過將你自己的 BindingContext
分配給一些控件來做到這一點。
展望反射器,它看起來像BindingContext
設置首次diring的get
在ContainerControl
- 事實上,這是只有發生在BCL它似乎是new
編輯:
public override BindingContext get_BindingContext()
{
BindingContext bindingContext = base.BindingContext;
if (bindingContext == null)
{
bindingContext = new BindingContext();
this.BindingContext = bindingContext;
}
return bindingContext;
}
即當第一次需要BindingContext
並且分配給this.BindingContext
導致事件(etc)被調用時,它被懶惰地實例化。
不知道爲什麼你認爲這與Visible
有關係 - 謹慎解釋?
我收集了有關winform生命週期的信息。雖然我正在研究,我發現這個網站:http://www.csharp411.com/c-winforms-form-event-order/在這裏,他們說,'BindingContextChanged'事件使窗體(控制)可見。所以我很好奇是什麼觸發了這個事件? – Martijn 2010-09-07 09:37:32
@Martijn - 我懷疑這是一個誤解;我在猜測,但它可能*正在變得可見*(即財產已被改變,齒輪正在呼呼,但尚未完成);呈現控件內容可能需要一個綁定上下文,這會導致綁定上下文更改事件觸發。即使事件還沒有開始(可見性變化尚未完成),此時檢查「可見」將返回true。 – 2010-09-07 10:01:09
@Martijn - 當然,你可以在綁定上下文更改的事件處理程序中插入一個斷點,然後查看調用堆棧以確保。 – 2010-09-07 10:01:45