[WPF]: странная проблема с ListBox - PullRequest
0 голосов
/ 27 августа 2010

У меня странная проблема с ListBox в Wpf, где у меня есть привязка к ListBox SelectedIndex к свойству в объекте viewModel.

Если SelectedIndex меньше нуля, ни один из элементов списка не будет выбран. Однако, если для SelectedIndex задано большее число, чем фактический размер списка, последний элемент все равно будет выбран!

Есть ли способ сделать так, чтобы listBox не выбирал последний элемент, если для SelectedIndex установлено более высокое значение, чем индекс последних элементов?

Спасибо

Ответы [ 2 ]

3 голосов
/ 27 августа 2010

По соглашению SelectedIndex, равный -1, означает отсутствие выбора;вот почему отрицательные значения не приводят к выделению в списке.

Чтобы более точно контролировать выделение, вы можете привязать его к ICollectionView, а не напрямую к коллекции (на самом деле это то, что я всегда рекомендуюпри выполнении MVVM) и управляйте выделением с помощью методов yourView.MoveCurrentTo ....Пример:

ListCollectionView cv = new ListCollectionView(sourceCollection); // bind the listbox's ItemsSource to this
cv.MoveCurrentTo(null); // no selection;
cv.MoveCurrentToLast();
0 голосов
/ 31 августа 2010

Одна идея может состоять в том, чтобы запретить выбранному индексу быть больше, чем последний индекс.

public IEnumerable<object> Items {get; protected set;} //your collection
private int m_selectedIndex; //the underlying data for your new property

private int SelectedIndex //bind the SelectedIndex property of the listbox to this
{
    get { return m_index; }
    set
    {
        if (value < Items.Count -1)
            m_index = value;
        else
            m_index = -1;

        PropertyChanged(...)
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...