У меня возникла странная проблема с моим списком со списком стран мира. Я использую XML файл (AllCountries.xml), как мой источник данных:wpf combobox multibinding to xml file странная ошибка
<?xml version="1.0" encoding="utf-8"?>
<countries>
<country>
<iso>AF</iso>
<name>Afghanistan</name>
</country>
<country>
<iso>AL</iso>
<name>Albania</name>
</country>
<country>
<iso>DZ</iso>
<name>Algeria</name>
</country>
<country>
<iso>AS</iso>
<name>American Samoa</name>
</country>
<country>
<iso>AD</iso>
<name>Andorra</name>
</country> etc
Мой выпадающий XAML выглядит следующим образом:
<ComboBox
Width="200"
SelectedValuePath="Country"
ItemsSource="{Binding XPath=/countries/country/name}">
<ComboBox.DataContext>
<XmlDataProvider x:Name="Dataxml" Source="\Content\AllCountries.xml" />
</ComboBox.DataContext>
</ComboBox>
И все прекрасно работает: Я вижу, Албания, Афганистан, Algerie ++ +. ОК, так что я хочу, чтобы иметь соответствующий (ISO) код, отображаемый в раскрывающемся списке, как это:
Афганистан, AF
Албания, AL
Algerie, DZ
и так далее. Для достижения этой цели я добавить ItemTemplate к моему выпадающий список:
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock>
<TextBlock.Text>
<MultiBinding StringFormat="{}{0}, {1}">
<Binding XPath="/countries/country/name" />
<Binding XPath="/countries/country/iso" />
</MultiBinding>
</TextBlock.Text>
</TextBlock>
</DataTemplate>
</ComboBox.ItemTemplate>
При запуске приложения все, кажется, все в порядке - пока не нажать на выпадающий список и увидите следующий список отображения:
Афганистан, А. Ф.
Афганистан, А. Ф.
Афганистан, А. Ф.
Афганистан, А. Ф.
Афганистан, А. Ф.
Афганистан, А. Ф.
Афганистан, А. Ф.
Афганистан, А. Ф.
Афганистан, А. Ф.
Афганистан, А. Ф. ....
:-(Что-то, очевидно, не так с моим многопотоком XPath, но я не могу выясните это. Что тут происходит???
Thanks mate! Ваше решение работает как шарм! – JorgenH