我们遇到了一个问题,在那里
.Equals
和.GetHashCode
方法视为相等..EndCurrentEdit()
窗口2会触发窗口1的绑定更新BindingContext
我们发现这个问题与调用有关
((PropertyManager)ctrl.BindingContext[dataSource]).EndCurrentEdit();
Run Code Online (Sandbox Code Playgroud)
如果我们改变它
((PropertyManager)ctrl.BindingContext[dataSource, dataMember]).EndCurrentEdit();
Run Code Online (Sandbox Code Playgroud)
它工作正常.如果我们删除我们的.Equals
和.GetHashCode
覆盖,它也可以正常工作,因此两个对象模型不再被认为是相等的.
这对我来说没有意义,因为窗户是相同的,所以dataMember
属性也是一样的.
从这个链接,我相信这些调用的定义是:
public BindingManagerBase this[object dataSource] {
get {
return this[dataSource, ""];
}
}
public BindingManagerBase this[object dataSource, string dataMember] {
get {
return EnsureListManager(dataSource, dataMember);
}
internal BindingManagerBase EnsureListManager(object dataSource, string dataMember) {
BindingManagerBase bindingManagerBase = null;
if (dataMember == null)
dataMember = "";
// Check whether data source wants to …
Run Code Online (Sandbox Code Playgroud)