2

我寫的交互行爲(從混合SDK),它可以連接到一個DataGrid,並做一些神奇的基於視圖模型在DataGrid中的DataContext的DataGrid的列。
因爲DataContext可以稍後設置,所以我必須監聽DataContext在行爲中的更改。所以,我勢必對DependencyProperty美聯社DataGrid的DataContext的,就像這樣:Silverlight的行爲:的AssociatedObject的DataContext的變化

BindingOperations.SetBinding(this, SourceProperty, new Binding("DataContext") { Source = AssociatedObject }); 

這條線被擊中,這樣的結合確實會發生。

現在棘手的問題: 如果我叫

datagrid.DataContext = new MyViewModel(); 

一切完美。但是,如果DataGrid包含在某個用戶控件(不一定是它的直接子),我想打電話給

this.DataContext = new MyViewModel(); 

Source屬性的回調不火。我調試了它,設置了datagrid.DataContext,所以DataContext通過可視化樹繼承,因爲它應該是這樣的,如果我手動調用update的行爲,它確實會看到DataContext,但沒有任何事情會自動發生。
我不想命名DataGrid實例,我不想命名的行爲,因爲可以在一個用戶控件任意數量的那些,我想設置用戶控件的DataContext的,讓系統的DependencyProperty工作,它的魔力。

我在做什麼錯?

+0

嘗試設置在相反的方式結合:SetBinding(AssociatedObject的,FrameworkElement.DataContextProperty,新的Binding( 「源」){源=此,模式= BindingMode.TwoWay}); – vorrtex 2011-02-04 12:50:17

+0

@vorrtex:這聽起來像一個答案,而不是評論。也許它的戰略地位在於它的錯誤。 – AnthonyWJones 2011-02-04 13:01:51

回答

2

您是否嘗試過簡單的東西: -

BindingOperations.SetBinding(this, SourceProperty, new Binding()); 

這應該給你的DataContext對象。沒有Path的綁定返回源對象。沒有明確的Source的綁定返回當前的DataContext

問題是的this(行爲)是否從DataGrid中獲得了附加值?我認爲它可能會。

相關問題