0

2つのコンボボックスがあり、最初のコンボボックスの値に応じて2番目のコンボボックスを更新したいと思います。コンボボックスをデータセットではなく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には、XML データ ファイルの Uri を設定できるプロパティ「Source」があります。

于 2012-07-14T11:48:44.027 に答える