我有一个具有双向可绑定属性的自定义控件。我还在价值的设定者身上举起ValueChanged
事件。
对于此类自定义控件,我需要将DataSourceUpdateMode更改为OnPropertyChanged
而不是标准OnValidating
。
当我在设计器中进行所有数据绑定时,自定义控件是否可能在添加到表单后将数据绑定设置为OnPropertyChanged
?
编辑:
目前我正在这样做:
protected override void OnCreateControl()
{
base.OnCreateControl();
Binding binding = this.DataBindings[0] as Binding;
if (binding != null)
{
binding.DataSourceUpdateMode = DataSourceUpdateMode.OnPropertyChanged;
}
}
这是正确的方法还是OnBindingContextChanged
更合适的事件?
答案 0 :(得分:1)
OnCreateControl
没用,OnBindingContextChanged
更适合更改DataBindings
。另外,DataBindings[0]
代替DataBindings
,您应该使用if
上的循环,如果要在特定属性上应用逻辑,请使用PropertyName
语句检查Binding
protected override void OnBindingContextChanged(EventArgs e)
{
foreach (Binding item in DataBindings)
{
if (item.PropertyName == "SomeProperty")
item.DataSourceUpdateMode = DataSourceUpdateMode.OnPropertyChanged;
}
base.OnBindingContextChanged(e);
}
1}}对象:
EndInit
作为应用此类自定义初始化任务的想法,您可以实现ISupportInitialize
接口,并在function exec() {
var name = 'answer';
var object_literal = {
name: document.getElementById('TextBox1').value,
street: document.getElementById('TextBox2').value,
answer: name
};
alert(object_literal.name);
alert(object_literal.street);
alert(object_literal.answer);
}
exec();
方法中初始化完成时放置要应用的逻辑。