ich eine benutzerdefinierte Steuerelement, das eine Value
Eigenschaft hat, dass Zwei-Wege-Bindung und auch eine ValueChanged
Veranstaltung unterstützt:Binding nicht zu Value Ereignis abonniert
public event EventHandler ValueChanged;
[Bindable(BindableSupport.Yes, BindingDirection.TwoWay)]
public virtual MyObject Value
{
get { return this.value; }
set
{
this.value = value;
OnValueChanged(new EventArgs());
}
}
private void OnValueChanged(EventArgs e)
{
EventHandler handler = ValueChanged;
if (handler != null)
handler(this, e);
}
Diese Steuerung funktioniert gut, wenn auf einem Formular und die Daten platziert Bindungen im Designer festgelegt. Die Bindungsquelle abonniert das Ereignis korrekt und die zugrunde liegende Datenquelle wird entsprechend aktualisiert.
Nun Ich schaffe die Steuerung dynamisch durch folgende Maßnahmen:
MyControl ctl = new MyControl();
ctl.DataBindings.Add(new Binding("Value", this.bindingSource, "SomeField", true, DataSourceUpdateMode.OnPropertyChanged));
jedoch durch diese Weise die Binding subscribe nicht dem ValueChanged
Ereignis. Ich überprüfte den Code, der vom Designer generiert wurde, und es ist nicht so, dass sich die Bindingsource für das Ereignis registriert. Ich nehme an, dass das Hinzufügen der Bindung zu den Datenbindungen dies tun sollte, aber es tut dies nicht.
Was könnte hier fehlen?
Vielen Dank für dieses Snippet. Jetzt kann ich verfolgen, ob eine Bindung stattfindet, und verstehe, warum der Wert in der Datenquelle nicht festgelegt ist. –