2013-09-04 2 views
1

я получил следующий код:Проблемы с BindlingList <T> и поле со списком

private BindingList<INoun> _nouns; 

private BindingList<INoun> Nouns 
{ 
    get 
    { 
     if (_nouns == null) 
     { 
      _nouns = new BindingList<INoun>(_model.Feature.Nouns); 
      _nouns.Insert(0, new Noun(-1, "Please select...")); 
     } 
     return _nouns; 
    } 
} 


public interface INoun 
{ 
    int Id; 
    string Text; 
} 

Свойство Nouns привязан к ComboBox, который добавляет запись по умолчанию Please select... к BindingList.

Проблема, которая возникает у меня здесь, заключается в том, что запись Please select... неожиданно добавляется в базовую коллекцию _model.Feature.Nouns, и я не хочу, чтобы это произошло.

Есть ли способ добавить элемент Please select... по умолчанию в ComboBox без его добавления в базовую коллекцию?

Благодаря

ответ

2

BindingList является просто оболочкой, в основном, для получения уведомлений, вокруг _model.Feature.Nouns, который остается в качестве основного списка элементов (именно поэтому у вас есть AllowEdit, AllowNew, AllowRemove на BindingList):

Если вы хотите работать на совершенно новый список (хотя я не уверен, что это цель BindingList), попробуйте:

_nouns = new BindingList<INoun>(_model.Feature.Nouns.Select(x=>x).ToList()); 
+0

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

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