如何将两个ItemSource绑定到ListBox项?

时间:2012-03-31 16:21:57

标签: c# windows-phone-7 linq-to-xml

我有个案,

    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文件中的芬兰文本读入“result2”,但我只能将一个ItemSource设置为ListBox。我努力了,但找不到任何解决方案。我想显示两个不同的XML文件中的“dictLanguage”值。

寻找任何解决方案,

  • 我可以合并 result1 result2
  • 或者,同时读取两个xml文件,使用“from ... select”子句,我无法读取该文件
  • 或者,将 result1 result2 绑定到列表框
  • 或者,任何可能的,更好的解决方案

有人能告诉我解决方案吗? - 谢谢!

2 个答案:

答案 0 :(得分:1)

您可以将两个列表合并在一起以创建一个项目来源:

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

答案 1 :(得分:0)

您无法将两个ItemsSource绑定到ListBox。正确而简单的方法是将来自2个xml文件的数据组合成一个对象集(包含所有翻译)。你可以写:

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

请阅读此link,了解有关合并多个来源的更多信息。