2012-02-06 2 views
0

WPF에서 바인딩을 배우기 시작했으며 동일한 컨트롤을 사용하여 여러 ObjectDataProvider를 사용하는 데 약간의 문제가 있습니다.동일한 컨트롤을 사용하여 여러 ObjectDataProviders 사용

  1. 데이터베이스에서 고객의 위치 목록을 가져 오는 데 사용되며 트 리뷰를 채우는 데 사용되며,
  2. 부터 모든 고객을 매개 변수로 위치를 취득 해 반환

    나는 두 ObjectDataProviders이 그 위치, listView 채우기.

TreeView 항목 중 하나를 클릭하면 SelectedItem 텍스트가 매개 변수로 사용되므로 listview를 채우는 데 사용됩니다.

<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, custom'IValueConverter' ... –

답변

0

ObjectDataProviders은 바인딩 할 수 없으므로 유연성이 부족합니다. 다른 것들 중에서도 (TreeView)에 바인딩하고 Binding.Converter을 사용하면 해당 값을 기반으로 아이템에 맞는 아이템을 얻을 수 있습니다.