我有一个绑定到集合的网格。由于某种原因,我不知道,现在当我在网格中执行某些操作时,网格不会更新。
情况:当我单击网格中的按钮时,它会增加同一行中的值。当我单击时,我可以调试并查看值增量,但值不会在网格中更改。 但是当我点击按钮,最小化并恢复窗口时,值会更新...我需要做什么才能让值像以前一样更新?
更新 这个问题没有解决,但我在这里接受了最好的答案。
它没有被解决,因为当数据来自数据库而不是来自缓存时,它可以用作usuall。对象被序列化并抛出事件丢失的过程。这就是为什么我重新构建它们并且它适用于我所知道的原因,因为我可以与它们进行交互但是它似乎因为未知原因而无法更新网格。
答案 0 :(得分:2)
为了使绑定成为双向的,从控制到数据源以及从数据源控制数据源必须以两种可能的方式之一实现属性更改通知事件:
实现INotifyPropertyChanged接口,并在属性更改时引发事件:
public string Name
{
get
{
return this._Name;
}
set
{
if (value != this._Name)
{
this._Name= value;
NotifyPropertyChanged("Name");
}
}
}
为每个必须在控件更改时通知控件的属性强制更改事件。事件名称必须采用 PropertyName 已更改:
的格式public event EventHandler NameChanged;
public string Name
{
get
{
return this._Name;
}
set
{
if (value != this._Name)
{
this._Name= value;
if (NameChanged != null) NameChanged(this, EventArgs.Empty);
}
}
}
*作为注释,在窗口最大化后,您的属性值是正确的,因为控件重新读取数据源中的值。
答案 1 :(得分:0)
听起来您需要在更新代码中调用DataBind。
答案 2 :(得分:0)
我正在使用Collection和Grid之间的BindingSource对象。通常我不需要打电话。