2012-09-12 57 views
1

我有一個用戶控件的DataGrid中充滿了成員。 DataGrid.ItemsSource綁定到模型上的ObservableCollection。 DataGrid.SelectedItem綁定到模型上的SelectedMember字段。 SelectedMember._set調用NotifyPropertyChanged,事件調用SetValue()用於公開的DependencyProperty。自定義DependencyProperty不更新外部視圖模型

此用戶控件位於頁面上。該頁面也有一個視圖模型。我試圖將UserControl.CurrentMember綁定到viewmodel.SelectedMember,但它沒有改變。我可以將CurrentMember.MemberName綁定到文本框,並使用成員名稱填充框,以便它看起來像UserControl正確地公開DependencyProperty。但如果我綁定到模型,它不會更新。

我找不到任何交叉綁定。對TextBox的綁定工作正常。頁面模型中的字段是新的,所以沒有任何約束。

可能是什麼問題?頁面模型上的字段是否需要成爲DependencyProperty?如果是這樣的話,編譯器會給我一個錯誤。

我會嘗試獲取代碼示例,但它如此根深蒂固,我不能只發布幾行代碼。

湯姆P.

+0

您是否缺少TwoWay綁定?文本框文本默認是雙向的。 – dowhilefor

+0

我試過TwoWay,OneWay,OneWayToSource ......唯一發生的是我得到StackOverflow異常。 我已將TwoWayByDefault添加到DependencyProperty。沒有任何幫助。 –

回答

0

梳理代碼,並試圖複製在新項目中的問題後,我發現這個問題。

在UserControl中,我將DataContext設置爲模型。但是當我把它放在頁面上時,UserControl.DataContext會被覆蓋。我需要做的是命名MainGrid並將MainGrid的DataContext設置爲UserControlModel。 MainGrid對於UserControl是私有的,不會被覆蓋。現在它奇妙地工作。