将多个源绑定到单个XAML组合框中

时间:2017-06-23 04:45:23

标签: c# wpf 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}}" />

是否有类似我可以做的事情,或者我错过了什么或错误的语法?

2 个答案:

答案 0 :(得分: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 :(得分:-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并将其绑定到组合框。