Использование нескольких ObjectDataProviders с одним и тем же элементом управления - PullRequest
0 голосов
/ 07 февраля 2012

Я только начал изучать связывание в WPF, и у меня возникли проблемы с использованием нескольких ObjectDataProviders с одним и тем же элементом управления.

У меня есть два ObjectDataProviders:

  1. Используется дляполучить список местоположений клиентов из базы данных и используется для заполнения TreeView и
  2. принимает местоположение в качестве параметра и возвращает всех клиентов из этого местоположения, заполняя listView.

Я хотел бы сделать так, чтобы при нажатии на один из элементов TreeView, чтобы он принимал текст SelectedItem в качестве параметра, использовал его для заполнения списка.

    <ObjectDataProvider 
        x:Key="getLocations" 
        ObjectType="{x:Type local:DataSetCreator}"
        MethodName="getLocations" 
        />

    <ObjectDataProvider 
        x:Key="getCustomersFromLocation" 
        ObjectType="{x:Type local:DataSetCreator}"
        MethodName="getCustomersFromLocation">
        <ObjectDataProvider.MethodParameters>
            <x:Static Member="System:String.Empty" />
        </ObjectDataProvider.MethodParameters>
    </ObjectDataProvider>


    <TreeView HorizontalAlignment="Left" 
        Margin="12,12,0,12" 
        Name="treeView2" Width="186"      
        ItemsSource="{Binding Source={StaticResource getLocations}}" >

        <TreeView.ItemTemplate>
            <DataTemplate>
                <TextBlock Text="{Binding Country}" />                    
            </DataTemplate>
        </TreeView.ItemTemplate>
    </TreeView>


    <ListView x:Name="lstCustomers"
            ItemsSource="{Binding Source={StaticResource getCustomersFromLocation}}" Margin="204,41,12,12">
        <ListView.View>
            <GridView>
                <GridViewColumn Header="CustomerID"
                        Width="200"
                        DisplayMemberBinding="{Binding Path=CustomerID}" />
                <GridViewColumn Header="Company Name"
                        Width="370"
                        DisplayMemberBinding="{Binding Path=CompanyName}" />
            </GridView>
        </ListView.View>
    </ListView>

Возможно ли эточтобы достичь этого в XAML, или мне нужно использовать выделенный код?

1 Ответ

0 голосов
/ 07 февраля 2012

ObjectDataProviders не очень гибки, так как не могут быть связаны. Среди прочего, вы можете связать с SelectedItem из TreeView и использовать Binding.Converter, чтобы получить вам нужные предметы на основе этого значения.

...