Autor Beitrag
sworddancer
Hält's aus hier
Beiträge: 15



BeitragVerfasst: Di 13.11.07 10:05 
Hallo zusammen,

ich bin derzeit am entwickeln eines Prototypen der mit WPF die Benutzeroberfläche anzeigt und mit der .Net Configuration die Datenverwaltung handhabt.

Der fall ist folgender. Ich lasse mir in einer Listbox über Binding eine Liste mit verschiedenen Einträgen Anzeigen. Mit Hilfe des SelectionChanged Event zeige ich daneben die Informationen des ausgewählten Objektes an. Wenn ich jetzt allerdings die Werte des Objektes ändere funktioniert die SelectionChanged Methode nicht mehr richtig. Wenn die Methode jetzt ausgeführt wird blieb der geänderte Eintrag als erstens in der Liste von SelectedItems stehen und das neu ausgewählte Element wird unten aufgeführt. Selbst wenn ich die Listbox auf SingleSelection stelle passiert das gleiche und er besitzt wieder zwei Einträge wo oben der zuletzt geänderte drin steht. Es gibt die Möglichkeit nach einer Auswahl die Liste von selectedItems zu löschen. Allerdings verliere ich dadurch die Markierung welches objekt ausgewählt wurde. Diese Markierung muss ich aber haben. Zudem funktioniert das Löschen der selectedItems auch nicht immer. Das verhalten des Löschen bringt dann die folge das er alle Einträge bis auf den ersten gelöscht hat.

Ich habe hier mal ein kleines Testprogramm geschrieben welches diesen Fehler beinhaltet. Diese Fehler sind mir sowohl bei der Listbox, der ListView und der Combobox aufgefallen. Jetzt würde ich gerne wissen ob das ein Fehler von mir ist oder ein Fehler des Frameworks. Das Testprogramm ist sehr einfach. es zeigt in einer Listbox einträge von dem objekt Adresses an welche in der AdressList gespeichert sind. Wenn jetzt ein eintrag markiert wird und anschliesend in den Textboxen der wert verändert wird tritt der oben beschriebene Fehler auf. Der Code selbst ist nicht schön geschreiben wofür ich mich gleich mal entschuldigen möchte

Ich bedanke mich schonmal für eure Hilfe und verbleibe
mit freundlichen Grüßen
sworddancer


Moderiert von user profile iconChristian S.: Topic aus Frameworks verschoben am Di 13.11.2007 um 09:59
Einloggen, um Attachments anzusehen!
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Di 13.11.07 11:10 
Hallo!

Könntest Du vielleicht relevante Codestellen posten, damit man sich nicht durch Dein Projekt "wühlen" muss? Ich hab's nur mal kurz gestartet, da fiel mir nicht wirklich ein Fehler auf, außer dass das DataBinding wohl noch nicht so funktioniert, dass die Änderungen auch in der Listbox sichtbar werden.

Grüße
Christian

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
sworddancer Threadstarter
Hält's aus hier
Beiträge: 15



BeitragVerfasst: Di 13.11.07 12:26 
Hallo,
tut mir leid das ich nicht die Codezeilen gepostet habe. Muss aber gestehen so richtig zum posten gibt es da auch nichts versuche es trozdem

Hier lade ich als erstens meine Klassen welche die Daten besitzten. das Object Simulationdata enthält eine liste von adressen. Die liste besitzt eine Funktion wodurch ich eine äquivalente Liste für WPF bekomme. Diese Liste lade ich in meine ressource "Adresslist" die der Listbox als Source dient
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
AdressenListe.SelectionMode = SelectionMode.Single;
Simulationdata data = ConfigFactory.getSimulatioData();

ObjectDataProvider provider = (ObjectDataProvider)FindResource("Adresslist");
provider.ObjectInstance = data.AllAddress.getWPFList();


ausblenden XML-Daten
1:
2:
3:
4:
<ListBox Margin="39.816,0,0,126.218" IsSynchronizedWithCurrentItem="True"
Grid.ColumnSpan="2" Grid.Row="1" Grid.RowSpan="5" 
ItemsSource="{Binding Source={StaticResource Adresslist}}"
SelectionChanged="ShowAdress" x:Name="AdressenListe"/>


ausblenden C#-Quelltext
1:
2:
3:
4:
5:
private void ShowAdress(object sender, SelectionChangedEventArgs e)
{
  ObjectDataProvider provider = (ObjectDataProvider)FindResource("currentAdress");
  provider.ObjectInstance = AdressenListe.SelectedItem;
}

diese Funktion wird bei jeder änderung der Selection von der Listbox aufgerufen. Diese nimmt das aktuell selektierte element und stellt es durch die resource "currentAdress" den Listboxen zurverfügung. Die listboxen wiederum sind per minding mit diesem element verbunden.

Den fehler selbst kann man einerseits auf dem benutzerinterface sehen aber auch in der Funktion ShowAdress.
Habe noch ein paar sachen ausprobiert und festgestellt das, dass Projekt welches den fehler hier darstellen soll den fehler nicht immer darstellt. Wenn der neu eingegebene string kleiner als der alte ist kommt der fehler nicht immer. Wenn er allerdings länger als der alte string ist dann passiert der fehler eigentlich fast immer.

MFG sworddancer
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Di 13.11.07 14:45 
Ich kann deinen Fehler nicht nachvollziehen (und hoffe, dass das nicht daran liegt, dass er möglicherweise in 3.5 gefixt wurde :B ). In der GUI sehe ich immer nur ein Item markiert, mit einem auf SelectionChanged gesetzten Breaktpoint sehe ich ebenfalls nur SelectedItem.Count == 1. Damit ich die Beschreibung nicht falsch verstanden habe: ich wähle z.B. Adam aus, ändere den Vornamen zu Adamah und klicke dann auf Aaron.

PS: Wozu überhaupt der Umweg über SelectionChanged und ObjectDataProvider? Binde die TextBoxen doch einfach an SelectedItem der ListBox (sofern das auch in deinem nicht-vereinfachten Projekt funktioniert ;) ).
sworddancer Threadstarter
Hält's aus hier
Beiträge: 15



BeitragVerfasst: Mi 14.11.07 09:00 
Hmm das ist interesant das der fehler bei dir nicht auftrit. Habe es jetzt auch mal mit dem .Net 3.5 Beta 1 versucht allerdings tritt bei mir der fehler weiterhin auf. Hast du vielleicht noch was anderes installiert zu dem .Net 3.5 Beta woran es liegen könnte das es funktioniert? Habe auch mal die zeit genutzt und es auf mehreren anderen Rechnern ausprobiert habe aber überall das gleiche problem.
Auf die Idee das ganze über das selected Item zuamchen bin ich bisher noch net gekommen danke für den tipp.
sworddancer Threadstarter
Hält's aus hier
Beiträge: 15



BeitragVerfasst: Mi 14.11.07 11:07 
Hallo zusammen,

danke für eure Antworten. Habe das Problem jetzt behoben. Musste feststellen das bei mir ein Windows XP Sicherheitsupdate gefehlt hatte. Nach der Installation dieses Sicherheitsupdates funktionierte das ganze jetzt. habe es zwar noch nicht alles 100% getestet sieht aber sehr gut aus.

Vielen dank euch allen

MFG
sworddancer