Laden...

In einer Autocompletebox das SelectedItem per Code richtig setzen

Erstellt von jansenpeter vor 9 Jahren Letzter Beitrag vor 4 Jahren 2.789 Views
J
jansenpeter Themenstarter:in
38 Beiträge seit 2013
vor 9 Jahren
In einer Autocompletebox das SelectedItem per Code richtig setzen

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?

  • Zensiert -
4.931 Beiträge seit 2008
vor 9 Jahren

Hast du in deiner ItemSource die INotifyPropertyChanged-Schnittstelle implementiert?

J
jansenpeter Themenstarter:in
38 Beiträge seit 2013
vor 9 Jahren

Was ich vergaß zu erwähnen, die ItemSource ist kein Binding sondern eine AutoCompleteStringCollection

  • Zensiert -
4.931 Beiträge seit 2008
vor 9 Jahren

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).

J
jansenpeter Themenstarter:in
38 Beiträge seit 2013
vor 9 Jahren

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!

  • Zensiert -
J
jansenpeter Themenstarter:in
38 Beiträge seit 2013
vor 9 Jahren

Auch schon versucht 😉

  • Zensiert -
5.657 Beiträge seit 2006
vor 9 Jahren

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

J
jansenpeter Themenstarter:in
38 Beiträge seit 2013
vor 9 Jahren

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 😃

  • Zensiert -
_
277 Beiträge seit 2014
vor 4 Jahren

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