С# Update, связанный с общим списком

У меня есть сводка в моей форме, которая связана с общим списком такой строки:

private List<string> mAllianceList = new List<string>();

private void FillAllianceList()
{
    // Add alliance name to member alliance list
    foreach (Village alliance in alliances)
    {
        mAllianceList.Add(alliance.AllianceName);
    }

    // Bind alliance combobox to alliance list
    this.cboAlliances.DataSource = mAllianceList;
}

Пользователь может добавлять или удалять элементы в поле со списком.
Я читал в другом месте, что, просто добавляя или удаляя элемент в общем списке, содержимое выпадающего списка должно автоматически обновляться; то же самое должно произойти, если я использую Sort() на нем.
Но по какой-то причине я не могу выполнить эту работу. Я вижу, что свойство DataSource combobox правильно обновляется по мере добавления/удаления/сортировки элементов, но содержимое, отображаемое в поле со списком, не относится к свойству DataSource.

Я, конечно, что-то пропустил или что-то не так.
Спасибо заранее!

EDIT:
Ответ, который я выбрал, решил проблему для добавления и удаления, но объект BindingList не может быть отсортирован, и это необходимо для меня. Я нашел решение, в котором пользовательский класс создается путем наследования BindingList и добавления возможностей сортировки, но я хотел бы знать, есть ли более легкое решение в моем случае.
Любые предложения о том, как легко решить эту проблему?

Ответы

Ответ 1

Самый простой способ - просто использовать BindingList так:

private List<string> mAllianceList = new List<string>();
private BindingList<string> bindingList;    

private void FillAllianceList()
{
    // Add alliance name to member alliance list
    foreach (Village alliance in alliances)
    {
        mAllianceList.Add(alliance.AllianceName);
    }

    bindingList = new BindingList<string>(mAllianceList);

    // Bind alliance combobox to alliance list
    this.cboAlliances.DataSource = bindingList;
}

Затем, отсюда, просто примените список привязки, чтобы добавлять и удалять элементы оттуда. Это удалит его как из списка, так и из ComboBox.

EDIT: Чтобы ответить на вопрос о сортировке, я думаю, что самый простой (но, возможно, "взломанный" способ сделать это будет примерно таким:

mAllianceList.Sort();
bindingList = new BindingList<string>(mAllianceList);
this.cboAlliances.DataSource = bindingList;

Таким образом, после сортировки вы создаете новый список привязки и reset источник данных. Возможно, есть более элегантный способ сделать это, однако это должно сработать.