Эй, ребята, им жесткое время, пытаясь решить эту проблему ив в течение 3 часов и до сих пор не удалось выяснить, почему его делать это ... вот кодПочему мой обработчик событий срабатывает дважды?
private void Catagory_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
int selectedCategoryId = categoryIdList[categoryListBox.SelectedIndex];
client.GetItemsAsync(selectedCategoryId);
client.GetItemsCompleted +=
new EventHandler<GetItemsCompletedEventArgs>(client_GetItemsCompleted);
}
void client_GetItemsCompleted(object sender, GetItemsCompletedEventArgs e)
{
itemIdList.Clear();
itemNameList.Clear();
itemNumberList.Clear();
itemDisplayList.Clear(); //Clears the Display List Items
if (e.Error == null)
{
itemIdList = e.ItemIDList;
itemNumberList = e.itemNumber;
itemNameList = e.Result;
for (int i = 0; i < itemIdList.Count; i++)
{
itemDisplayList.Add(new ItemDisplay { itemNumber = itemNumberList[i], itemName = itemNameList[i] });
}
//Populating the listbox controll with the itemDisplaylist...
Items.ItemsSource = itemDisplayList;
}
else
{
MessageBox.Show("Problem in getting the items list.");
}
}
Когда я изменить категорию в первый раз, когда он отлично работает ... я отлично понимаю, что он вызывает функцию GetItemsAsync(selectedCategoryId)
и захватывает результаты и вызывает обработчик событий client_GetItemsCompleted()
, а внутренняя работа обработчика событий работает так, как предполагается, он устанавливает списки с помощью правильные данные и отображает itemNumber и itemName в списке ... НО, когда я снова меняю категорию, чтобы получить разные элементы, она не работает должным образом, то, что она делает, заключается в том, что она очищает списки и заполняет списки, поскольку это предполагаемый to, запускает цикл for и заполняет listBox с именем Items
, но по какой-то причине он снова возвращается в начало функции и опустошает все списки:/... пожалуйста, сообщите мне, почему он снова выполняет функцию .. и когда я выбираю другая категория снова выполняет обработчик событий 3 раза, а затем 4 раза и т. д. Кто-нибудь знает, почему он это делает? мне нужно это фиксированный для моего проекта :(
как я исправить это ?? – Haseeb
им жаль, но где бы я отказаться от подписки? где я должен писать код 'client.GetItemsCompleted - =' и как бы я его напишу, вы можете сказать, я этого не делал до – Haseeb
Большое вам спасибо: D – Haseeb