【发布时间】:2011-01-14 22:33:00
【问题描述】:
我正在尝试在 WinForm 应用程序中运行的用户控件中实现一些非常简单的数据绑定。用户控件是这样扩展的-->
public partial class ucDiagnosis : XtraUserControl, INotifyPropertyChanged
然后在那个用户控件上我有这个属性 -->
private string m_Pets;
public string Pets
{
get
{
return m_Pets;
}
set
{
if (value != this.m_Pets)
{
this.m_Pets = value;
NotifyPropertyChanged("Pets");
}
}
}
然后在构造函数中我有这个 -->
tbxListPets.DataBindings.Add("Text",this, Pets);
接下来我在我的活动区域中有这个 -->
public event PropertyChangedEventHandler PropertyChanged;
接下来我有这个方法-->
private void NotifyPropertyChanged(String info)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(info));
}
}
最后,在我将数据加载到控件中的方法中,我有这个 -->
var additionalDiagnosis = BLLMcp.GetPlanDiagnosisAddtional(planID);
Pets = additionalDiagnosis.Rows[0]["Pets"].ToString();
程序运行,但文本框保持空白。无论我输入什么,它都会立即清除。此外,我在 Setter 上放置了一个断点,该断点在初始加载时被调用,并将正确的数据分配给 value,但它不会更新文本框。此外,无论我在框中输入什么,Setter 都不会再次被调用。
我的进一步尝试
所以我似乎已经让它工作了,但我很困惑如何,如果它真的是。我只是在我的 LoadData() 方法中添加了这一行和其他两行 -->
tbxListPets.Text = addtionalDiagnosis.Pets;
为什么我必须在设置属性后显式设置文本框?这不是 Data Binding 为我做的事情,还是我设法搞砸了,只实现了单向绑定?
【问题讨论】:
标签: c# winforms data-binding .net-3.5 user-controls