在我的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
但更改的值不会在绑定的文本框中更新。
答案 0 :(得分:2)
看起来你将引用类型赋值的行为与绑定行为混淆了。当您最初为objGroupTxt
分配值(称为此实例A)时,objGroupTxt
现在指向A.您接下来将objGroupTxt
(A)分配给main.DataContext
,这将是modifiedGroupTxt
现在也指向A.目前还不清楚你发布了什么,但看起来你从处理中得到的是objGroupTxt
是一个新实例(B)。然后,您将main.DataContext
重新分配给B,但DataContext
仍在使用A.
您可以通过在每次获得新的已处理实例时重新分配objGroupTxt
或将INotifyPropertyChanged
设置为包含更改通知的属性DependencyProperty
或DataContext
)来更正此问题然后,您可以将{{1}}绑定到。
答案 1 :(得分:0)
如果没有比已经提供的更多信息(您可能需要提供更多代码以获得更全面的答案),我猜您的对象不会实现INotifyPropertyChanged
接口。此外,您没有将您的上下文设置为dt,而是设置为dt内的对象,因此更改dt将不会执行任何操作。