Eigenartiges Verhalten beim Binding

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von us4711.

    Eigenartiges Verhalten beim Binding

    Auf Basis eines FlowLayoutPanel erstelle ich ein neues Control.
    Ein Aspekt dieses Controls soll über eine Bindingsource datengebunden sein.
    Sinnfällig erscheint mir eine Benamsung wie folgt, da diese Property eine Auswahl an das Dataset zurückgeben soll, und diese Bezeichnung ja auch mit der Nomenklatur von MS übereinstimmt.

    VB.NET-Quellcode

    1. <Bindable(True)>
    2. Public Property SelectedValue As Object
    3. Get
    4. Return m_SelectedValue
    5. End Get
    6. Set(value As Object)
    7. m_SelectedValue = value
    8. RaiseEvent SelectedValueChanged(Me, New EventArgs)
    9. End Set
    10. End Property

    Tatsächlich werden bei Veränderung des Datensatzzeigers die Werte des neuen Datensatzes übernommen. Aber zum Verrecken werden geänderte Werte nicht zurückgeschrieben.
    Dann hab ich gedacht, na vielleicht verbirg sich dieser Property irgendwo unsichtbar im FlowLayoutPanel. Hab also mit Shadows und Overrides rumgemacht. Compiler hat das klaglos angenommen, Effekt=Zero.

    Dann war ich zu einer laaaaaaaaaaaaaaaaangen Mittagspause weg, und beim Kaffee fiel mir ein, schlicht den Namen der Property zu ändern:

    VB.NET-Quellcode

    1. <Bindable(True)>
    2. Public Property MySelectedValue As Object
    3. Get
    4. Return m_SelectedValue
    5. End Get
    6. Set(value As Object)
    7. m_SelectedValue = value
    8. RaiseEvent SelectedValueChanged(Me, New EventArgs)
    9. End Set
    10. End Property

    Und das funktioniert einwandfrei !!!!!!

    Nun meine Frage: Kennt jemand dieses Verhalten? Ist im Code DOCH was nicht richtig?

    Danke im Voraus für Eure Kommentare.
    ändere mal das Event auf MySelectedValueChanged, obs dann wieder nicht geht 8)

    Dieses Benamungs-System
    Property: PropertyName, Event PropertyNameChanged
    ermöglicht (undokumentiert) eine annere Art von Databinding, nämlich unabhängig von INotifyPropertyChanged, was ja normal für Databinding zuständig ist.
    Also, das ergibt keine Änderung-
    Ich hab' auch mal des Event komplett rausgenommen, die Fehlfunktion taucht dann wieder bei Benamsung SelectedValue auf, nicht jedoch bei MySlectedValue (mit Breakpoint auf der jewiligen Variablenverarbeitung in Setter und Getter.