如何在.net中绑定一个可编程属性

本文关键字:一个 可编程 属性 net 绑定 | 更新日期: 2023-09-27 17:54:36

我有一个表单,它的编程属性叫做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"));

有办法做到这一点吗?

谢谢!

Update:当我试图运行我的程序时,我得到的错误是相当不可描述的,但是进一步研究它,我发现我得到的错误是因为我的属性是只读的。我给属性添加了一个空白设置器,现在绑定工作正常了。

你必须在你的类上实现INotifyPropertyChanged,这样绑定的项目就会知道什么时候有所不同。这里有一篇MSDN的文章,还有一些其他的文章可以帮助你实现这个接口。

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

如何在.net中绑定一个可编程属性

根据问题的更新和更改,要获得单向绑定,您可以使用使用其他以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

与其添加空白设置器的繁琐操作,不如尝试使用Binding的重载构造函数,该构造函数接受DataSourceUpdateMode值并传递DataSourceUpdateMode . never。这将防止绑定尝试从控件更新数据源。