如果我有三种不同的数据源,例如:
<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}}" />
是否有类似我可以做的事情,或者我错过了什么或错误的语法?
答案 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并将其绑定到组合框。