2012-03-31 51 views
0

我有一個情況下,如何將兩個ItemSources綁定到ListBox項目?

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 

在XAML中,我有

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

我讀從一個XML文件中英文文本「RESULT1」和芬蘭文從另一個XML文件導入到「結果2」 ,但我只能將一個ItemSource設置爲ListBox。我努力嘗試,但找不到任何解決方案。我想顯示兩個不同XML文件中的「dictLanguage」值。

尋找任何解決方案,

  • 要麼我可以合併RESULT1RESULT2
  • 或者,simultaneouly閱讀兩個XML文件,使用 「從......選擇」,這Iamunable探路者條款
  • 或者,兩者的結合,RESULT1RESULT2到列表框中
  • 或者任何可能的更好的解決方案

請問誰能告訴我解決方案? - 謝謝!

回答

0

您無法將兩個ItemsSources綁定到ListBox。正確和簡單的方法是將來自2個xml文件的數據合併到一個對象集合中(包含所有的翻譯)。你可以寫:

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

請更多信息閱讀本link用於組合多個來源。

+0

謝謝你,它的工作原理!我花了我整整一天的時間,通過幾種不同的方式解決這個問題,這很簡單:)。 – wafers 2012-03-31 16:54:22

+0

不客氣:) – 2012-03-31 16:54:51

+0

順便說一句,爲什麼你把這個問題投下來,只是好奇地想知道,並學習如果我做錯了什麼? – wafers 2012-03-31 16:58:26

1

你可以聯盟的兩份名單,共同創造一個項目來源:

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

這是我的另一個問題/問題的答案,非常感謝!:) – wafers 2012-03-31 16:55:25

+0

很酷,歡迎您:) – KodeKreachor 2012-03-31 16:59:16

+0

不工作,不幸的是。它只顯示result1的內容,當我使用result2切換result1時,如result2.Contact(result1),然後顯示result2的內容。 – wafers 2012-03-31 18:03:04

相關問題