使用具有相同控件的多个ObjectDataProviders

时间:2012-02-06 22:03:12

标签: wpf binding objectdataprovider

我刚刚开始学习WPF中的绑定,并且在使用具有相同控件的多个ObjectDataProviders时遇到了一些麻烦。

我有两个ObjectDataProviders:

  1. 用于从数据库获取客户位置列表,用于填充TreeView和
  2. 将位置作为参数并返回该位置的所有客户,填充listView。
  3. 我想这样做,以便当我点击其中一个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 :(得分:0)

ObjectDataProviders不是很灵活,因为它们不受约束。除此之外,您还可以绑定SelectedItem的{​​{1}}并使用Binding.Converter根据该值为您提供项目正确的项目。