自定义DependencyProperty不更新外部视图模型

时间:2012-09-12 00:25:06

标签: wpf binding user-controls dependency-properties

我有一个UserControl,里面有一个填充了成员的DataGrid。 DataGrid.ItemsSource绑定到模型上的ObservableCollection。 DataGrid.SelectedItem绑定到模型上的SelectedMember字段。 SelectedMember._set调用NotifyPropertyChanged,事件为公开的DependencyProperty调用SetValue()。

此UserControl位于页面上。该页面也有一个viewmodel。我正在尝试将UserControl.CurrentMember绑定到viewmodel.SelectedMember,但它没有改变。我可以将CurrentMember.MemberName绑定到文本框,并且该框填充了成员名称,因此看起来UserControl正在公开DependencyProperty。但如果我绑定到模型,它就不会更新。

我找不到任何交叉绑定。绑定到TextBox工作正常。页面模型上的字段是新的,因此没有任何约束。

可能是什么问题?页面模型上的字段是否需要是DependencyProperty?如果是这种情况,编译器会给我一个错误。

我会尝试获取代码示例,但它根深蒂固,我不能只发布几行代码。

Tom P。

1 个答案:

答案 0 :(得分:0)

在梳理代码并尝试在新项目中复制问题后,我发现了问题。

在UserControl中,我将DataContext设置为Model。但是当我把它放在页面上时,UserControl.DataContext会被覆盖。我需要做的是命名MainGrid并将MainGrid的DataContext设置为UserControlModel。 MainGrid是UserControl的私有,不会被覆盖。现在它运作得非常好。