我有一個奇怪的問題與Wpf中的ListBox,其中我有一個ListBox SelectedIndex綁定到viewModel對象中的屬性。[WPF]:奇怪的問題與列表框
如果SelectedIndex小於零,則不會選擇任何列表框項目。但是,如果SelectedIndex設置爲比列表的實際大小更大的數字,則最後一個項目仍處於選中狀態!
當SelectedIndex被設置爲比最後的項目索引更高的值時,是否有辦法讓listBox不選擇最後一個項目?
謝謝
我有一個奇怪的問題與Wpf中的ListBox,其中我有一個ListBox SelectedIndex綁定到viewModel對象中的屬性。[WPF]:奇怪的問題與列表框
如果SelectedIndex小於零,則不會選擇任何列表框項目。但是,如果SelectedIndex設置爲比列表的實際大小更大的數字,則最後一個項目仍處於選中狀態!
當SelectedIndex被設置爲比最後的項目索引更高的值時,是否有辦法讓listBox不選擇最後一個項目?
謝謝
按照慣例,-1的SelectedIndex表示沒有選擇;這就是爲什麼負值不會導致在列表框中進行選擇的原因。爲了更好地控制選擇,你可以綁定到ICollectionView,而不是直接綁定到集合上(事實上這是我在做MVVM時總是推薦的),並使用yourView.MoveCurrentTo來控制選擇。方法。 示例:
ListCollectionView cv = new ListCollectionView(sourceCollection); // bind the listbox's ItemsSource to this
cv.MoveCurrentTo(null); // no selection;
cv.MoveCurrentToLast();
一個想法可能是禁止所選索引大於最後一個索引。
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(...)
}
}