2014-08-28 156 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