2011-12-20 53 views
0

我對ComboBox控件有一個相當有趣的例子 - CustomComboBox;Silverlight中的TemplateBinding DataContext CustomControl

在這個ComboBox的樣式中,Popup包含一個請求DataContext的自定義控件;

<ctrl:CustomGrid DataContext="{TemplateBinding DataContext}" GridName="{Binding Preferences.CurrentGridName}"/> 

的想法:

  • 使用此控件多次在一個頁面上
  • 在母版容器使用它
  • 母版控制需要有關於頁它不同DataContexts是

邏輯:

  • 在被覆蓋的OnApplyTemplate我得到電網和連接幾個事件處理器

問題:

  • 母版控制觸發OnApplyTemplate只有一次
  • 的CustomComboBox的第一次亮相是如預期。 然而,每一個後續apearance是相同的DataContext,改變CustomComboBox 的DataContext的,即使這些變化沒有達到改變我CustomGrid的DataContext

我相信,在綁定或呈現邏輯是什麼壞... 請扔一些想法,當ControlTemplate被應用到覆蓋方法(無論其母公司,也沒有子女)控制我將在這裏體會到一絲

感謝

+0

爲了幫助您使用多個組合框,請提供有關標記的更多詳細信息。主頁,頁面和組合框如何關聯?你發佈了哪個控件的模板部分?你訪問網格的代碼是什麼? – 2011-12-21 15:55:41

回答

1

OnApplyTemplate被調用。如果輸入OnApplyTemplate一次,則重寫控件也必須創建一次。我的意思是你只需要一個單一的masterpage實例。這不應該是意外的。

說到Popup s和DataContext,經常會遇到從Popup到其外部的綁定問題。所以,我寧願寫一些代碼隱藏,以提供正確的上下文,而不是依靠Binding s。在SL5之前,確實存在DataContextChanged事件缺失的問題。要解決此問題,您應該在CustomComboBox上定義自定義DependencyProperty,將其綁定到CustomComboBox的上下文,並將其值分配給中的PropertyChangedCallback

相關問題