【发布时间】:2018-06-07 09:49:25
【问题描述】:
大家好!
我在将静态 xml 资源绑定到 C# WPF 应用程序中的组合框时遇到问题。它基本上可以工作,但总是用我的 xml 文件中的第一个条目填充(正确数量的)项目。 请看我的代码:
XML 文件(resources/config/xml/ServiceProviders.xml):
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<ServiceProviders xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<ServiceProvider name="Service Provider 1">
</ServiceProvider>
<ServiceProvider name="Service Provider 2">
</ServiceProvider>
<ServiceProvider name="Service Provider 3">
</ServiceProvider>
<ServiceProvider name="Service Provider 4">
</ServiceProvider>
<ServiceProvider name="Service Provider 5">
</ServiceProvider>
</ServiceProviders>
包含绑定的 XAML 代码(只是主窗口中的 Grid):
<Grid Name="ServiceProviderGrid"
Grid.Row="0"
Grid.Column="0"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch">
<Grid.DataContext>
<XmlDataProvider x:Name="ServiceProviderData"
Source="resources/config/xml/ServiceProviders.xml"
XPath="/ServiceProviders/ServiceProvider">
</XmlDataProvider>
</Grid.DataContext>
<Grid.Resources>
<DataTemplate x:Key="ServiceProviderDataTemplate">
<TextBlock Text="{Binding XPath=/ServiceProviders/ServiceProvider/@name}"></TextBlock>
</DataTemplate>
</Grid.Resources>
<Grid.ColumnDefinitions>
<ColumnDefinition></ColumnDefinition>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
</Grid.RowDefinitions>
<Label Name="ServiceProviderLabel"
Grid.Row="0"
Margin="10,10,10,5"
VerticalAlignment="Bottom">
Service Provider
</Label>
<ComboBox ItemsSource="{Binding}"
ItemTemplate="{StaticResource ServiceProviderDataTemplate}"
Name="ServiceProviderComboBox"
IsSynchronizedWithCurrentItem="True"
Visibility="Visible"
Grid.Row="1"
Margin="10,5,10,10"
VerticalAlignment="Stretch"
SelectedIndex="1"
Cursor="Hand">
</ComboBox>
</Grid>
下图最好地说明了我面临的问题:
有谁知道如何用静态 xml 资源中提供的所有不同条目填充ComboBox?
目的是用户将来可以编辑的数据资源。他们将能够创建、编辑和删除服务提供者。但首先,所有的提供者都必须是可见的。
【问题讨论】:
标签: c# xml wpf data-binding