Listview SelectedItem
-
Hallo
Ich verwende ein Listview in WPF.
<ListView HorizontalAlignment="Stretch" IsSynchronizedWithCurrentItem="True" ItemsSource="{Binding Stations}" SelectedItem="{Binding ActiveStation}" />
Das Problem ist nu dass wenn ich starte das erste Element ausgewählt ist.
Das möchte ich nicht. Wie verhindere ich das?
-
Welchen Wert hat denn ActiveStation beim Aufruf?
-
Also ActiveStation wird aus dem Code heraus nicht gesetzt. Ist anfänglich null. Dann wird ActiveStation vom ListView auf den ersten wert in der Liste gesetzt.
-
Also wenn ich SelectedIndex auf -1 setzt im Code oder auch UnselectAll() aufrufe. ist nichts mehr selektiert.
Setzte ich SelectedIndex auf -1 im XAML wird totzdem der erste wert ausgewählt. !?
CodeBehind Rules.
Es sei den jemand hat eine bessere Lösung.
-
Lieder kommt der Aufruf von UnselectAll im Konstruktor in manchen Fällen zu spät.
Kann man der Listview nicht irgendwie sagen im XAML dass nichts ausgewählt werden soll?
-
Gibt es denn gar keine Möglichkeit einer Listbox zu sagen dass sie keinen Wert selektieren soll im XAML.
Wieso wird dass denn überhaupt automatisch. Das passiert übrigens nur wenn die Elemente über Itemssource gesetzt wird und auch das selectedItem gesetzt ist.
Werden die Items einzeln hinzugefügt in XAML wird nichts ausgewählt. Auch wenn SelectedItem gebunden ist.
-
Ich denke, die Kombination "IsSynchronizedWithCurrentItem" und "SelectedItem" ist wohl daran Schuld. Benötigst du denn beides?
Oder mal mit dem BindingMode (OneWay, TwoWay, ...) herumspielen.
-
Hallo TH69
Ich denke, die Kombination "IsSynchronizedWithCurrentItem" und "SelectedItem" ist wohl daran Schuld.
Das habe ich im Moment auch herausgefunden.
IsSynchronizedWithCurrentItem habe ich jetzt mal weggelassen und nun gehts.Aber nun bin ich total verwirrt. Ich war bisher der Meinung wenn man das SelectedItem gebunden hat dann muss man zwingend IsSynchronizedWithCurrentItem auf true setzen.
Das wird doch überall gesagt. Wenn die Frage kommt: "Mein aktuelles element wird nicht synchronisiert", dann kommt immer als erstes: Hast du "IsSynchronizedWithCurrentItem" auf true gesetzt.
Drum verstehe ich gerade deine Antwort nicht so richtig. Wann brauche ich denn IsSynchronizedWithCurrentItem
-
Hi,
IsSynchronizedWithCurrentItem macht Sinn wenn du im Hintergrund eine CollectionView hast. Dann wird das selektierte Item mit dem CurrentItem der CollectionView synchrinosiert. Das kannst du zum Beispiel nutzen, um eine Listbox und eine Combobox mit der gleichen Itemssource synchron zu halten.
Du musst in deinem Fall nur aufpassen, dass du beim Binding des SelectedItem den Mode auf TwoWay gesetzt hast, ansonsten werden Änderungen in der Gui am SelectedItem sich nicht im ViewModel widerspiegeln.
mfG
KaPtainCugel
-
Hi,
Ok soweit verstanden. Was mir allerdings nicht klar ist, wieso wird sofort der erste Wert in der Liste selektiert wenn man IsSynchronizedWithCurrentItem auf true setzt.