0

在我的 WPF 应用程序中,我使用实体框架。我将主网格的数据上下文设置为 GroupTxt 的对象。

<Grid Name="main">
  <!-- Textboxes with binding -->
</Grid>


  DataEntities dt = new DataEntities();
  GroupTxt objGroupTxt; 

  void MainWindow_Loaded(object sender, RoutedEventArgs e)
    {
        objGroupTxt= dt.GroupTxts.First();
        main.DataContext = objGroupTxt;
    }

然后我将对象传递给一个外部 dll,在该 dll 中处理它,然后返回该对象。然后我将此对象分配给 objGroupTxt:

objGroupTxt= modifiedGroupTxt // object modified by external dll

但更改的值不会在绑定的文本框中更新。

4

2 回答 2

2

看起来您将引用类型分配的行为与绑定的行为混淆了。当您最初为objGroupTxt(调用此实例 A)分配值时,objGroupTxt现在指向 A。接下来您将objGroupTxt(A) 分配给main.DataContext,现在也将指向 A。从您发布的内容中不清楚,但看起来像您'从处理中modifiedGroupTxt得到一个新实例(B)。然后您重新分配objGroupTxt给 B,但main.DataContext仍在使用 A。

DataContext您可以通过在每次获得新的已处理实例时重新分配或设置objGroupTxt为具有更改通知 (INotifyPropertyChanged或) 的属性来纠正此问题,DependencyProperty然后您可以绑定DataContext到该属性。

于 2012-07-11T15:30:21.873 回答
0

如果没有比已经提供的更多信息(您可能需要提供更多代码以获得更完整的答案),我猜您的对象没有实现该INotifyPropertyChanged接口。此外,您没有将上下文设置为 dt,而是设置为 dt 内的对象,因此更改 dt 不会做任何事情。

于 2012-07-11T14:19:03.140 回答