2011-12-07 48 views
1

我想使一個UserControl只適用於特定類型的DataContext。 爲此我做這樣的事情:覆蓋WPF中的DataContext

public new AutoSuggestViewModel DataContext 
      { get { return (AutoSuggestViewModel)base.DataContext; } 
       set { base.DataContext = value; } } 

這個不幸往往打破。NET的反射,使控制誤差在設計視圖在Visual Studio更糟糕,當我使用此控件作爲的一部分DataGridTemplateColumn的編輯模板會導致錯誤並且無法正常工作,這也是由於反射損壞。它出現在AmbiguousMatchExceptiondatagrid.BeginEdit()

有沒有人知道圍繞這個問題的工作以及如何實現這一點。 是的,我曾想過使用MyDataContext這樣的其他屬性,它會返回鑄造DataContext但我正在尋找更優雅的東西,如果可能的話。

回答

2

更優雅的東西應該是根本不施加在DataContext上。事實上,爲什麼你想要這樣做,對我來說沒有任何意義。爲什麼不直接定義一個單獨的依賴屬性的正確類型?然後,您的控件的使用者可以通過綁定到其數據上下文或使用任何其他標準WPF慣用語來分配給它。

+0

嗨,謝謝你的回答。那麼我不想這樣做,因爲用戶會感到困惑。這是datacontext還是datacontext綁定到哪一個?我必須確保我保持兩個屬性同步。這只是噪音。 – user668032

0

還有其他方法可以確保分配了正確的對象類型,例如可以在重寫元數據中創建一個屬性已更改的回調函數,檢查新值的類型並拋出異常,如果「不喜歡它」。

+0

謝謝,雖然你所說的會起作用,但這還不夠。當我引用DataContext時,我想要一個類型化對象,否則我必須每次輸入它。) – user668032

+0

我找到了我的問題的答案,但是我無法發佈它,因爲我由於某種原因被Stack Overflow禁用。感謝大家的幫助。 – user668032