【发布时间】:2012-02-06 22:03:12
【问题描述】:
我刚刚开始学习 WPF 中的绑定,并且在使用具有相同控件的多个 ObjectDataProvider 时遇到了一些麻烦。
我有两个 ObjectDataProvider:
- 用于从数据库中获取客户位置列表并用于填充 TreeView 和
- 将位置作为参数并返回该位置的所有客户,并填充列表视图。
我想这样当我单击 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 中实现这一点,还是我需要使用代码隐藏?
【问题讨论】:
-
您可以使用绑定:ElementName=treeView2、Path=SelectedItem、自定义
IValueConverter...
标签: wpf binding objectdataprovider