Hi,
ich habe folgendes Problem, ich habe in meinem MainWindow-Fenster eine Autocompletebox mit einer großen ItemSource im Hintergrund. Nun setze ich per drücken auf einen Button das SelectedItem der Autocompletebox auf einen Wert, der sich in der ItemSource befindet. Es wird ein SelectionChange-Event gefeuert.
SelectionChange-Event
Mittels dem SelectedItem lade ich Daten aus einer Datenbank und fülle Textboxen.
Problem: Mein Problem ist nun, wenn ich das SelectedItem der Autocompletebox dynamisch also aus dem Code heraus änder, dann macht er das zwar, aber er zeigt mir weder in der Autocompletebox den selektierten Wert an noch den Wert der Textboxen.
Wenn ich den Quellcode debugge sehe ich in den Eigenschaften der Textboxen, dass die Werte eingetragen wurden, diese aber nicht sichtbar werden.
Kann mir jemand helfen?
Hast du in deiner ItemSource die INotifyPropertyChanged-Schnittstelle implementiert?
Was ich vergaß zu erwähnen, die ItemSource ist kein Binding sondern eine AutoCompleteStringCollection
Hallo,
ja, du hast recht und ich hätte ersteinmal danach suchen sollen, z.B. Using the AutoCompleteBox in the WPF Toolkit 😉.
Ich habe noch WPF AutoCompleteBox SelectedItem Binding Issue gefunden, was sich so ähnlich wie bei dir liest. Kannst ja mal zum Test ebenso eine MessageBox anzeigen lassen und schauen, ob du dann den Text in der AutoCompleteBox siehst.
Hast du denn SelectedItem bei dir gebunden oder arbeitest du nur im Code-Behind? Evtl. könnte der Binding Mode 'TwoWay' helfen (aber wahrscheinlich ist dies auch die Voreinstellung).
Das was du sagst, dass mit der MessageBox und den Text ausgeben lassen, das habe ich bereits getan. Aber nicht hingeschrieben, weil es sonst noch mehr verwirrt hätte (ich hab da ein Händchen für)
Ich habe mir das SelectedItem ausgeben lassen, dann kommt genau das was ich auch haben möchte, genauso wie beim Text genau das selbige
Er geht ja auch durch das SelectionChanged-Events worin ich Textboxen fülle und andere Controls enable und disable. Was er aber alles nicht macht. Er geht eben nur durch, das Fenster verändert sich aber nicht!
Dann noch ein Versuch:
autoCompleteBox.InvalidateVisual();
Hi jansenpeter,
das Invalidieren eines Steuerelements sollte nicht die Lösung sein, das sollte ja das DataBinding übernehmen. Die berechtigte Frage von Th69, ob du Two-Way-Binding verwendest, hast du nicht beantwortet. Ohne deine Mithilfe und ohne einen konkreten Codeauschnitt (C# und XAML) kann man allerdings nur raten und nicht wirklich helfen.
Christian
Weeks of programming can save you hours of planning
So,
dass mit der Autocompletebox habe ich nun erledigt, sehr geholfen hat mir folgendes Tutorial: Tut
Hab mir ein Binding eingebaut mit TwoWay und das hat gefunktioniert. Danke für eure Hilfe 😃
Beitrag schon ein wenig älter.
Tatsächlich gerade am selben Punkt stehen geblieben.
Die AutoCompleteBox von WpfToolkit brauch die TwoWay Bindung, scheint nicht voreingestellt zu sein.
Hat jemand schon mal geschafft für dieses Element ein Watermark zu setzen?
Krieg ich aktuell nicht hin, gibts dort irgendwas? Habs mal den TextBoxHelper von MahApps versucht, der hat dort leider nichts anzeigen könnten.
Grüße