使用XMLDataProvider作为静态资源将数据绑定到ComboBox WPF

时间:2016-12-07 02:33:48

标签: c# xml wpf xaml

我正在尝试将XML文件中的数据绑定到组合框。我没有看到任何错误,但ComboBox框没有按预期填充。

<ComboBox x:Name="cbxGenre" HorizontalAlignment="Left" Margin="86,49.864,0,0" VerticalAlignment="Top" Width="120" Grid.Row="1">
                <ComboBox.ItemsSource>
                    <Binding Source="{StaticResource Genres}" XPath="./genre/name" />
                </ComboBox.ItemsSource>
            </ComboBox>

在我的App.xaml

<Application.Resources>
    <XmlDataProvider x:Key="Genres" Source="Genres.xml" XPath="Genre" IsInitialLoadEnabled="True" />
</Application.Resources>

XML文件Genres.xml

 `<genreList>
  <genre>
    <name>Swing</name>
  </genre>
  <genre>
    <name>Blues</name>
  </genre>
  <genre>
    <name>Latin</name>
  </genre>
  <genre>
    <name>Pop</name>
  </genre>
  <genre>
    <name>Funk</name>
  </genre>
  <genre>
    <name>Folk</name>
  </genre>
  <genre>
    <name>Ballad</name>
  </genre>
  <genre>
    <name>Christmas</name>
  </genre>
  <genre>
    <name>Western/Bluegrass</name>
  </genre>
</genreList>`

1 个答案:

答案 0 :(得分:1)

在App.xaml中XmlDataProvider注册看起来Xpath查询错误。它应该是XPath="genreList"而不是XPath="genre"

根据MSDN examples,注册应为:

<Application.Resources>
    <XmlDataProvider x:Key="Genres" Source="Genres.xml" XPath="genreList" IsInitialLoadEnabled="True" />
</Application.Resources>