我通过以下方式进行 DataBinding
private List<MyEditor> Editors { get; set; }
private Dictionary<int,object> dictionary
private void SetEditors()
{
Editors.Clear();
foreach (var element in dictionary)
{
var editor = MyFactory.GetEditor();
editor.DataBindings.DefaultDataSourceUpdateMode = DataSourceUpdateMode.OnPropertyChanged;
editor.DataBindings.Add("Value", element, "Value");
//some code
Editors.Add(editor);
}
//some more code
}
然后在 GUI 中我对Value
of进行了一些更改Editors[0]
,之后在另一段代码中我尝试从dictionary
元素中获取值并发现它没有改变,即使我Editors[0].DataBindings["Value"].WriteValue()
用来确保将数据写入dictionary
.
在调试器中,我可以看到下图:
Editors[0].DataBindings["Value"] {System.Windows.Forms.Binding} System.Windows.Forms.Binding
....
DataSource {[0, oldValue]} object {System.Collections.Generic.KeyValuePair<int,object>}
....
尽管
Editors[0].Value "newValue" object {string}
会是什么呢?将不胜感激任何想法。