2012-02-28 2 views
-1

Я использую ObservableCollection для привязки данных к списку. Есть ли способ сделать первый элемент списка выбранным сразу после привязки данных? Есть ли какое-нибудь событие, которое я могу использовать?Как выбрать первый элемент списка по умолчанию?

Спасибо

ответ

1

Сразу после (или любой точки после) Установка DataContext для ListBox (или родительский объект - возможно, страница), просто установите выбранный индекс в первый элемент в списке.

listbox.SelectedIndex = 0; 

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

0

почему вы не попробовать что-то вроде

var listBoxItem = ItemContainerGenerator.ContainerFromItem(myList.First()); 
listBoxItem.Focus(); 

или

listBoxItem.IsSelected = true; 
+0

Когда я должен это делать? Я должен использовать конкретное событие, чтобы обеспечить загрузку всех данных? – Sergejs

+0

Да, всякий раз, когда ваши данные ограничены, и вы уверены, что у ListBox есть некоторые элементы, вы можете это сделать ... otherway 'listBoxItem' будет null – GaaRa

1

Создать свойство с именем IsSelected в объекте, содержащихся в ObservableCollection. Привяжите это к ListBoxItem's IsSelected собственности через TwoWay переплет.

Затем в страницы OnLoaded обратного вызова (или там, где вы связываете коллекцию в ListBox), сделать что-то вроде этого

foreach(var obj in myCollection) { 
    obj.IsSelected = false; 
} 
if(myCollection.Count > 0) { 
    myCollection[0].IsSelected = true; 
} 
// bind the collection to the listbox 
Смежные вопросы