2012-03-31 3 views
0

У меня есть случай,Как два элемента Item могут быть привязаны к элементу 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 в «result2» , но я могу установить только один ItemSource в ListBox. Я очень старался, но не могу найти решения. Я хочу отобразить оба значения «dictLanguage», которые берутся из двух разных файлов XML.

Глядя для любого решения,

  • Либо я могу объединить result1 и result2
  • Или Прочитайте два XML-файлы simultaneouly, которые Iamunable toread с помощью "из ... выберите" пункт
  • Или Binding оба result1 и result2 в ListBox
  • Или любое возможное и лучшее решение

Может ли кто-нибудь сказать мне решение, пожалуйста? - Благодаря!

ответ

0

Вы не можете привязать два ItemsSources к ListBox. Правильным и простым способом было бы объединить данные из 2 xml-файлов в один набор объектов (содержащий все переводы). Вы можете написать:

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

Пожалуйста, прочитайте эту link на дополнительной информации для объединения нескольких источников.

+0

Спасибо, это работает! Я потратил целый день на решение этой проблемы несколькими способами, и это было так просто :). – wafers

+0

Добро пожаловать :) –

+0

BTW, почему вы проголосовали за этот вопрос, просто любопытно узнать и узнать, что я сделал что-то не так? – wafers

1

Вы могли бы объединение ваших двух списков вместе, чтобы создать один источник пунктов:

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

Это ответ на другой вопрос/мою проблему, большое спасибо! :) – wafers

+0

Прохладный, добро пожаловать :) – KodeKreachor

+0

Не работает, к сожалению. Он отображает только содержимое result1, когда я переключаю result1 с result2, как result2.Contact (result1), затем он показывает содержимое результата2. – wafers

Смежные вопросы