2017-06-23 74 views
0

如果我有三个不同的数据源,例如:绑定多个数据源到一个单一的XAML组合框

<CollectionViewSource x:Key="Layer"/> 
<CollectionViewSource x:Key="New" /> 
<CollectionViewSource x:Key="Option" />  

如果我想所有的结果去到一个单一的组合框,我将如何绑定多个来源?

我可以得到一个绑定工作:

<ComboBox ItemsSource="{Binding Source={StaticResource Layer}}" /> 

但我想这样的事情(不工作):

<ComboBox ItemsSource="{Binding Source={StaticResource Layer, New, Option}}" /> 

有沿类似我可以做的东西线相反,还是我缺少某些东西或错误的语法?

回答

1

我认为一个CompositeCollection应该工作:

<UserControl.Resources> 
    <CollectionViewSource x:Key="Layer" Source="{Binding Layer}" /> 
    <CollectionViewSource x:Key="New" Source="{Binding New}" /> 
    <CollectionViewSource x:Key="Option" Source="{Binding Option}" /> 
</UserControl.Resources> 

然后

<ComboBox.ItemsSource> 
    <CompositeCollection> 
      <CollectionContainer Collection="{Binding Source={StaticResource Layer}}" /> 
      <CollectionContainer Collection="{Binding Source={StaticResource New}}" /> 
      <CollectionContainer Collection="{Binding Source={StaticResource Option}}" />       
    </CompositeCollection> 
</ComboBox.ItemsSource> 
-1

你尝试MultiBinding? 我看到MultiBinding的this example和它看起来像你所需要的。 这是来自例如:

 <ComboBox Height="30" Width="150" Margin="5" > 
     <ComboBox.ItemsSource> 
      <MultiBinding Converter="{StaticResource ConditionToItemSourceConverter}"> 
       <Binding Path="IsPerson"/> 
       <Binding Path="Persons"/> 
       <Binding Path="Employees"/> 
      </MultiBinding> 
     </ComboBox.ItemsSource> 
    </ComboBox> 

而且你总是可以在代码结合3个源1,并将其绑定到ComboBox。

相关问题