2012-03-31 5 views
0

ich einen Fall habe,Wie zwei ItemSources an ein ListBox-Element gebunden werden können?

public class dictLanguage 
    { 
     public string EnglishText { get; set; } 
     public string FinnishText { get; set; } 
    } 

    IEnumerable<dictLanguage> result1 = from ....select new dictLanguage{ EnglishText=... }; 
    IEnumerable<dictLanguage> result2 = from ....select new dictLanguage{ FinnishText=... }; 

    LstBox.DataContext = result1 

in XAML, ich habe

<listbox ItemsSource="{Binding}"> 
    ... 
    <TextBlock Text="{Binding EnglishText}"> 
    <TextBlock Text="{Binding FinnishText}"> 
    ... 
</listbox> 

Ich lese englischen Text aus einer XML-Datei in "result1" und die finnischen Text aus einer anderen XML-Datei in "result2" , aber ich kann nur eine ItemSource auf ListBox setzen. Ich habe mich bemüht, kann aber keine Lösung finden. Ich möchte beide Werte von "dictLanguage" anzeigen, die aus zwei verschiedenen XML-Dateien stammen.

für jede Lösung, Sehen,

  • Entweder ich result1 und result2
  • Oder simultaneouly, lesen die beiden XML-Dateien zusammenführen können, die Iamunable mit "aus ... wählen Sie" toread Klausel
  • Oder beide Bindung, result1 und result2 zum listbox
  • Oder jede mögliche und bessere Lösung

Könnte mir jemand bitte die Lösung sagen? - Vielen Dank!

Antwort

0

Sie können zwei ItemsSources nicht an eine ListBox binden. Korrekter und einfacher Weg wäre, Daten aus 2 XML-Dateien zu einem Objektsatz zu kombinieren (der alle Übersetzungen enthält). Sie können schreiben:

from englishText in xml1 
from finnishText in xml2 
select new DictLanguage() { EnglishText = englishText, FinnishText = finnishText }; 

Bitte, für die Kombination mehrerer Quellen dieses link auf weitere Informationen lesen.

+0

Vielen Dank, es funktioniert! Ich habe meinen ganzen Tag damit verbracht, dieses Problem auf verschiedene Arten zu lösen, und es war so einfach :). – wafers

+0

Gern geschehen :) –

+0

BTW, warum haben Sie diese Frage abgelehnt, nur neugierig zu wissen und zu lernen, wenn ich etwas falsch gemacht habe? – wafers

1

Sie könnten Vereinigung Ihre zwei Listen zusammen einen Artikel Quelle zu erstellen:

IEnumerable<dictLanguage> result1; 
IEnumerable<dictLanguage> result2; 
//populate collections.... 
IEnumerable<dictLanguage> allResults = result1.Union(result2); 
+0

Dies ist die Antwort auf eine andere Frage/Problem von mir, vielen Dank! :) – wafers

+0

Cool, du bist willkommen :) – KodeKreachor

+0

funktioniert nicht, leider. Es zeigt nur den Inhalt von result1, wenn ich result1 mit result2 umgebe, wie result2.Contact (result1), dann zeigt es den Inhalt von result2. – wafers