1

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

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

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

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

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

汤姆·P。

4

1 回答 1

0

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

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

于 2012-09-12T03:52:00.427 回答