Определение, когда Listbox завершил загрузку связанных элементов - PullRequest
0 голосов
/ 17 июля 2011

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

Для ясности,Я уже подключил событие Listbox_SelectionChanged, когда пользователь выбирает другой элемент - и это прекрасно работает.

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

Есть идеи?

Ответы [ 2 ]

2 голосов
/ 17 июля 2011

Вы можете подключиться к событию ItemList-Changed и выбрать первый элемент после его добавления:

public MyWindow()  
{  
    InitializeComponent();  

    ((INotifyCollectionChanged)ListBox.Items).CollectionChanged +=  
        ListBox_CollectionChanged;  
}  

private void ListBox_CollectionChanged(object sender,   
    NotifyCollectionChangedEventArgs e)  
{  
    if (e.Action == NotifyCollectionChangedAction.Add && ListBox.SelectedItem == null)
    {
        ListBox.SelectedItem = e.NewItems[0];
    }      
}
1 голос
/ 17 июля 2011

Не уверен, что вы действительно сможете найти безопасное уведомление о привязке данных WPF. Но, может быть, вы можете сделать следующее:

Вы сказали, что уже обрабатываете уведомление SelectionChanged из управления, так что это рабочий интерфейс UI -> DataModel. Если в вашем связанном объекте у вас есть свойство Selected и привязать его к элементу управления (скажем, выделить строку), это означает, что в событии SelectionChanged вы можете сделать Selected = true, что сделает UI-> ViewModel-> UI (чтобы выбрать строка). но это также означает, что в момент первоначального связывания вашей коллекции объектов ViewModel СЛЕДУЕТ вам установить для свойства Selected первого элемента значение true.

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

Надеюсь, это поможет.

Привет.

...