我有一个组合框,我为其分配如下值:
<ComboBox Height="33" VerticalAlignment="Top"
ItemsSource="{Binding ProductsList}"
SelectedValue="{Binding ProductName,Mode=TwoWay}"
DisplayMemberPath="ProductName"
SelectedValuePath="ProductID"/>
我将一个值“ALL”添加到集合ProductsList中。我在数据网格中有一个组合框列,它使用相同的ProductList,它不应该显示“ALL”。有没有办法在XAML中将ALL添加到组合框而不是将其添加到集合中?
答案 0 :(得分:2)
您可以使用CompositeCollection
,这样您就可以将集合和静态项目合并为一个ItemSource
示例:
<ComboBox>
<ComboBox.Resources>
<CollectionViewSource x:Key="Products" Source="{Binding ProductsList}"/>
</ComboBox.Resources>
<ComboBox.ItemsSource>
<CompositeCollection>
<ComboBoxItem>All</ComboBoxItem>
<CollectionContainer Collection="{Binding Source={StaticResource Products}}" />
</CompositeCollection>
</ComboBox.ItemsSource>
</ComboBox>
注意:您必须为CollectionViewSource
创建ProductsList
才能在CollectionContainer
中使用它,但这非常简单。您提到您在其他地方使用ProductsList
,因此您可以在CollectionViewSource
中定义Window.Resources
或查看资源而不是ComboBox
资源,然后您可以重复使用它。< / p>
答案 1 :(得分:0)
您可以将“全部”添加到ProductsList
,但可以使用您不需要的CollectionView.Filter
隐藏它。