0

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

我有两个 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 中实现这一点,还是我需要使用代码隐藏?

4

1 回答 1

0

ObjectDataProviders不是很灵活,因为它们不能被绑定。除其他外,您可以绑定到SelectedItemtheTreeView并使用 aBinding.Converter根据该值为您获取正确的项目。

于 2012-02-06T22:26:38.403 回答