在WPF中为combobox设置默认值

时间:2014-08-28 23:59:59

标签: c# wpf combobox

我有一个组合框,我为其分配如下值:

<ComboBox Height="33" VerticalAlignment="Top"
          ItemsSource="{Binding ProductsList}"
          SelectedValue="{Binding ProductName,Mode=TwoWay}" 
          DisplayMemberPath="ProductName"
          SelectedValuePath="ProductID"/>

我将一个值“ALL”添加到集合ProductsList中。我在数据网格中有一个组合框列,它使用相同的ProductList,它不应该显示“ALL”。有没有办法在XAML中将ALL添加到组合框而不是将其添加到集合中?

2 个答案:

答案 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隐藏它。

请参阅CollectionView Class