2012-02-06 41 views
0

我剛開始學習WPF中的綁定,並且在使用多個ObjectDataProviders時遇到了一些麻煩。在同一個控件中使用多個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中實現此目的,還是我需要使用代碼隱藏?

+0

你也許能夠使用綁定:ElementName = treeView2,Path = SelectedItem,自定義'IValueConverter' ... – 2012-02-06 22:24:26

回答

0

ObjectDataProviders不是很靈活,因爲它們不能被綁定。除此之外,您可以綁定到TreeViewSelectedItem,並使用Binding.Converter根據該值爲您提供物品正確的物品。

相關問題