如何绑定到.NET中的编程属性?

时间:2011-05-04 17:59:34

标签: c# .net winforms binding

我有一个名为SelectedAccessGroups的程序化属性的表单:

[Bindable(true)]
public string SelectedAccessGroups
{
    get { return "Selected Access Groups here"; }
}

我在表单上还有一个BindingSource,其中有一个名为EditableByAccessGroups的字段。我想将SelectedAccessGroups属性绑定到该字段。

我在我的表单构造函数中尝试了以下内容,但它不起作用:

this.DataBindings.Add(new System.Windows.Forms.Binding("SelectedAccessGroups",
  this.CriteriaBindingSource, "EditableByAccessGroups"));

有没有办法实现这个目标?

谢谢!

更新:我在尝试运行程序时遇到的错误非常不合适,但是进一步研究,我发现我收到了错误,因为我的属性是只读的。我在属性中添加了一个空白的setter,现在绑定工作正常。

3 个答案:

答案 0 :(得分:2)

你必须在你的类上实现INotifyPropertyChanged,这样绑​​定的项目就会知道什么时候有什么不同。这是一篇msdn文章,其他几篇文章也有助于实现这个界面。

http://msdn.microsoft.com/en-us/library/ms743695.aspx

答案 1 :(得分:1)

根据您对问题的更新和更改,要获得单向绑定,您可以使用其中一个将DataSourceUpdateMode作为参数的其他Binding构造函数。

http://msdn.microsoft.com/en-us/library/system.windows.forms.binding.aspx

http://msdn.microsoft.com/en-us/library/system.windows.forms.datasourceupdatemode.aspx

答案 2 :(得分:0)

尝试使用the overloaded constructor of Binding that takes a DataSourceUpdateMode value并传递DatasourceUpdateMode.Never,而不是添加空白二传手。这将阻止绑定尝试从控件更新数据源。

相关问题