2010-11-22 3 views
0

Ich versuche, Daten aus XML zu retreive und wenn Variable1 == Variable2, wird das Element (Listboxitem) zu 2 Elternelemente (Listbox - Listbox1, Listbox2) hinzufügen. Ich versuche, den folgenden Code zu verwenden:Hinzufügen eines Elements zu 2 Elternelementen

if (variable1 == variable2) 
{ 
    ListBox1.Items.Add(ListBoxItem); 
    ListBox2.Items.Add(ListBoxItem); 
} 
else 
{ 
    ListBox1.Items.Add(ListBoxItem); 
} 

Ich dachte, dies zu umgehen ich die ListBoxItem zu duplizieren kann fähig sein, aber ich bin nicht ganz sicher, wie.

Jede Hilfe sehr geschätzt: D

Dank!

Antwort

0

Sie können zwei ObservableCollections erstellen, die Verweise auf Elemente aus den XML-Daten enthalten, die Sie abgefragt haben.

Anstatt die obige Logik auf ListBoxItem anzuwenden, wenden Sie sie auf jede Referenz in den XML-Daten an und fügen sie zu collection1/collection2 hinzu.

Dann binden Sie einfach collection1/collection2 an listBox1.ItemsSource und listBox2.ItemsSource.

Sie haben zwei Listboxen, die dieselben Daten referenzieren, ohne die Probleme zu haben, die ui-Steuerelemente in der Struktur zu duplizieren.

+0

Danke für die Antwort, ich habe jetzt erkannt, dass Datenbindung der Weg zu gehen ist, aber ich weiß nicht, wo ich anfangen soll, da ich gerade erst C# lerne. Ich habe eine Weile nach Tutorials zur Verwendung von Bindung mit isoliertem Speicher gesucht, kann aber keine gute finden, weißt du eine? Danke – Jamie

+0

Der Link in Ihrer anderen Frage zeigt verbindliche Daten aus einer Datei in Ihrem XAP. Sie können diesen Ansatz auch auf Daten anwenden, die Sie aus dem isolierten Speicher laden. –

0

Jede Kontrolle in Wpf und Silverlight kann nur einmal im Objektbaum erscheinen. Sie können also kein ListBoxItem zu mehreren ListBoxen hinzufügen. Sie können

ListBoxItem itemToClone = ... 
ListBoxItem clonedItem = new ListBoxItem(); 
clonedItem.Content = itemToClone.Content; 

So eine „Kopie“ auf diese Weise erstellen, wenn itemToClone.Content ist nicht selbst eine Kontrolle, sondern ein String oder eine Zahl erhalten Sie zwei ListBoxItems haben denselben Inhalt zeigt.

+0

Danke für die schnelle Antwort, aber ich hätte erwähnt, dass ich ein StackPanel innerhalb der ListBoxItem verwende, so dass ich immer noch den Fehler "Element ist bereits das Kind eines anderen Elements" erhalten. – Jamie

+0

@Jamie: Das ist OK. Wie wurde dieses 'ListBoxItem' an erster Stelle erstellt? Kannst du den zweiten nicht auf die gleiche Weise erstellen? –

+0

ListBoxItem lbi = new ListBoxItem(); stack.Children.Add (Textblock); lbi .Content = Stapel; – Jamie

Verwandte Themen