2012-02-06 2 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, custom 'IValueConverter' ... –

ответ

0

ObjectDataProviders не очень гибкие, поскольку они не могут быть связаны. Помимо прочего, вы можете привязать к SelectedItemTreeView и использовать Binding.Converter, чтобы получить элементы, соответствующие позициям на основе этого значения.

 Смежные вопросы

  • Нет связанных вопросов^_^