实体框架 - 更新datacontext不更新UI?

时间:2012-07-11 14:13:40

标签: c# wpf entity-framework binding

在我的WPF应用程序中,我使用实体框架。我将主网格的datacontext设置为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,在那里处理它然后返回对象。然后我将此对象设置为objGroupTxt:

objGroupTxt= modifiedGroupTxt // object modified by external dll

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

2 个答案:

答案 0 :(得分:2)

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

您可以通过在每次获得新的已处理实例时重新分配objGroupTxt或将INotifyPropertyChanged设置为包含更改通知的属性DependencyPropertyDataContext)来更正此问题然后,您可以将{{1}}绑定到。

答案 1 :(得分:0)

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