2015-12-16 3 views
1

У меня есть выпадающий привязываться к наблюдаемым коллекциям черезComboBox переплетен в наблюдаемую коллекцию как добавить 1 дополнительное значение

cmbBladesTab1.ItemsSource = easyRunData.olstBlades; 

, который работает отлично. Я хочу, чтобы combobox привязывался ко всем этим значениям плюс один.

E.g. easyRunData.olstBlades; содержит "PL1", "PL2", "PL3", "PL4"

в то время как cmbBladesTab1 содержит "ALL BLADES", "PL1", "PL2", "PL3", "PL4"

--add вся работа должна быть сделана из кода за

Спасибо за вашу помощь.

+1

Не могли бы вы дать более подробную информацию о вашем вопросе? Честно говоря, я не понял, что именно вы пытаетесь достичь. –

+0

Возможный дубликат [Добавление предопределенного элемента в ComboBox с ItemsSource] (http://stackoverflow.com/questions/13542072/adding-predefined-item-to- a-combobox-with-itemssource) – Jose

+0

Отметьте это сообщение, возможно, это поможет вам> http://stackoverflow.com/questions/5134152/add-an-item-to-combobox-before-bind-data-from-data-base –

ответ

1

Можно добавить свойство, которое добавляет конкретный элемент в списке.

ObservableCollection<string> myCollection; 
ObservableCollection<string> MyCollectionViewProp 
{ 
    get 
    { 
     var tempCollection = new ObservableCollection<string>(myCollection); 
     tempCollection.Add("Extra element"); 
     return tempCollection; 
    } 
} 

В зависимости от размера коллекции и количества раз при обращении к нему, это, вероятно, программно простым решением. Если вам нужно часто обращаться к нему, тем хуже это решение, так как каждый раз он создает новую коллекцию. В этом случае вам, вероятно, следует прослушать событие CollectionChanged и сохранить отдельный избыточный список.

+0

@Florian Proksch который может работать! Но может ли такая сборка быть сериализована? И тогда мне придется обрабатывать обе коллекции, одну с дополнительным элементом только для combobox, а другую для всех других целей. – Patrick

+0

Пока ваш myCollection сериализуем, конечно. Используйте свойство только для привязки и выполняйте то, что вы хотите сделать, когда ваш дополнительный элемент выбран в настройщике свойства, которое вы привязали к SelectedItem комбо. Чтобы быть ясным: вы, вероятно, захотите сериализовать myCollection, а не свойство MyCollectionViewProp. – srandppl

1

Самый простой способ - добавить дополнительный элемент в наблюдаемую коллекцию с некоторым префиксом текста/ключа. Таким образом, поскольку он находится в коллекции, он будет виден в выпадающем списке, и когда пользователь выберет этот элемент, вы сможете оценить его, если он добавлен или нет.

Хороший пример действительно дан как ответ на этот вопрос add an item to combobox before bind data from data base

+0

Это самый простой способ и отлично работает. Но так как я должен выполнять другие операции с наблюдаемой коллекцией, я бы предпочел не менять ее, так как для нее потребуется повсюду обрабатывать дополнительную ценность («ВСЕ БЛОКИ») – Patrick

+0

Хорошо, потому что вы непосредственно устанавливаете коллекцию как его источником нет другого другого пути. Вы можете попытаться добавить элемент в источник элемента поля со списком после того, как вы назначили ему коллекцию. – Depechie

Смежные вопросы