2014-08-28 159 views
2

到组合框我有我赋值如下组合框:设置默认值WPF

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

我值“ALL”添加到集合产品列表。我有一个DataGrid中的组合框列使用相同的ProductList,它不应该显示“ALL”。有没有办法将所有添加到组合框的XAML而不是将其添加到集合?

回答

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,因此您可以在Window.Resources中定义CollectionViewSource或查看资源,而不是在ComboBox资源中,然后您可以重新使用它。

+0

这工作。但我希望选择“全部”作为默认值。我有一个属性ProductSelected,它默认设置为“ALL”。我设置它SelectedItem =“{绑定ProductSelected,模式= TwoWay,UpdateSourceTrigger = PropertyChanged}” 它正在工作较早时,我将全部添加到集合,但现在它不工作。 – perplexedDev 2014-08-29 17:24:36

+0

你可以在xaml中设置'SelectedIndex-'0''' – 2014-08-30 01:25:10