2014-08-28 4 views
2

У меня есть выпадающий, к которому я придаю значение, как показано ниже:Установите значение по умолчанию COMBOBOX в WPF

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

добавляет значение «ALL» для сбора ProductsList. У меня есть столбец combobox в datagrid, который использует тот же ProductList, который не должен показывать «ВСЕ». Есть ли способ добавить ALL в combobox в 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 в другом месте, чтобы вы могли определить CollectionViewSource в Window.Resources или просмотрели ресурсы вместо ресурсов ComboBox, после чего вы можете его повторно использовать.

+0

Это сработало. Но я хочу, чтобы «ВСЕ» было выбрано по умолчанию. У меня есть свойство ProductSelected, которое по умолчанию установлено как «ALL». И я устанавливал его SelectedItem = "{Binding ProductSelected, Mode = TwoWay, UpdateSourceTrigger = PropertyChanged}" Он работал раньше, когда я добавлял ALL в коллекцию, но теперь он не работает. – perplexedDev

+0

вы можете просто установить 'SelectedIndex-" 0 "' в xaml –