我的组合框显示了一个世界国家列表,我遇到了一个奇怪的问题。我使用XML(AllCountries.xml)文件作为我的数据源:
<?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>
运行应用程序时,一切似乎都没问题 - 直到我点击组合框并看到显示以下列表:
阿富汗,AF
阿富汗,AF
阿富汗,AF
阿富汗,AF
阿富汗,AF
阿富汗,AF
阿富汗,AF
阿富汗,AF
阿富汗,AF
阿富汗,AF ....
:-(我的XPath多绑定显然有问题,但我无法弄明白。这里发生了什么???
答案 0 :(得分:2)
这应该有效
ItemsSource="{Binding XPath=/countries/country}"
与
<MultiBinding StringFormat="{}{0}, {1}">
<Binding XPath="name" />
<Binding XPath="iso" />
</MultiBinding>
因为每个ComboBoxItem
的国家/地区都为DataContext
。
答案 1 :(得分:0)
您也可以尝试设置ItemTemplate
以便在内部托管2 TextBlocks
并使用路径对每个进行数据绑定!
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding XPath="/countries/country/name" }" />
<TextBlock Text="{Binding XPath="/countries/country/iso" }" />
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>