0

我有两个组合框,我想根据第一个组合框的值更新第二个组合框。我必须将组合框与 xml 文件而不是数据集绑定。我有搜索网,但没有找到帮助。

在此先感谢您的帮助。

4

1 回答 1

0

尝试这样的事情:

XAML 文件:

<Window x:Class="ComboBoxBindingXML.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">

    <Window.Resources>
        <XmlDataProvider x:Key="myData">
            <x:XData xmlns="">
                <Books>
                    <Book Title="Book1">
                        <Authors>
                            <Author Name="Make" Surname="Vey" />
                            <Author Name="Jane" Surname="McRoy" />
                        </Authors>
                    </Book>
                    <Book Title="Book2" />
                    <Book Title="Book3" />
                    <Book Title="Book4">
                        <Authors>
                            <Author Name="John" Surname="Rat" />
                            <Author Name="Dorian" Surname="Trust" />
                        </Authors>
                    </Book>
                    <Book Title="Book5" />
                </Books>
            </x:XData>
        </XmlDataProvider>
    </Window.Resources>

    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="30" />
            <RowDefinition Height="10" />
            <RowDefinition Height="30" />
            <RowDefinition Height="10" />
            <RowDefinition Height="30" />
            <RowDefinition Height="10" />
            <RowDefinition Height="30" />
        </Grid.RowDefinitions>

        <ComboBox Name="cbFirst" DataContext="{StaticResource myData}" ItemsSource="{Binding XPath=Books/Book }">
            <ComboBox.ItemTemplate>
                <DataTemplate>
                    <TextBlock Text="{Binding XPath=@Title}" FontWeight="Bold" />
                </DataTemplate>
            </ComboBox.ItemTemplate>
        </ComboBox>

        <ComboBox Name="cbSecond" Grid.Row="2" DataContext="{Binding ElementName=cbFirst, Path=SelectedItem}" ItemsSource="{Binding XPath=Authors/Author}">
            <ComboBox.ItemTemplate>
                <DataTemplate>
                    <StackPanel Orientation="Horizontal">
                        <TextBlock Text="{Binding XPath=@Surname}" FontWeight="Bold" />
                        <TextBlock Text=" " />
                        <TextBlock Text="{Binding XPath=@Name}" />                        
                    </StackPanel>
                </DataTemplate>
            </ComboBox.ItemTemplate>
        </ComboBox>

        <TextBlock Grid.Row="4" Text="{Binding ElementName=cbFirst, Path=Items.Count, UpdateSourceTrigger=PropertyChanged}" />
        <TextBlock Grid.Row="6" Text="{Binding ElementName=cbSecond, Path=Items.Count, UpdateSourceTrigger=PropertyChanged}" />
    </Grid>
</Window>

代码隐藏文件为空。一切都发生在 XAML 文件中。

XmlDataProvider类具有属性“Source”,您可以在其中设置 XML 数据文件的 Uri。

于 2012-07-14T11:48:44.027 回答