更改对象值时不刷新DataContext

New*_*per 4 .net c# data-binding wpf

我有一个grid,它DataContext是从代码后面分配的:

CustomerDataGrid.DataContext = _customerobj;
Run Code Online (Sandbox Code Playgroud)

当某些函数正在执行时,_customerobj对象会发生变化:

_customerobj = obj;
Run Code Online (Sandbox Code Playgroud)

但是DataContext根据新的对象细节不会更新.如果我使用以下内容它会更新:

_customerobj = obj;
CustomerDataGrid.DataContext = _customerobj;
Run Code Online (Sandbox Code Playgroud)

每次_customerobj更新或错过了什么时,我是否需要遵循相同的规定?

Adi*_*ter 5

您所经历的不是因为没有实施导致的INotifyPropertyChanged.

当你这样做时CustomerDataGrid.DataContext = _customerobj;,你将设置DataContext为某个值.之后你正在设置_customerobj = obj;,你只是给出一个_customerobj新值,但DataContext仍然引用原始对象,所以它不会改变.

例如:

string a = "hello";
string b = a; // b points to "hello"
a = "world";  // a points to "world"
              // but b's pointer doesn't change

Console.WriteLine(b); // Outputs "hello"
Run Code Online (Sandbox Code Playgroud)

这意味着您还必须设置DataContext.

注意:这实际上并不是字符串的工作方式,因为.NET字符串是不可变的,但希望这可以解决问题.