2011-01-03 3 views
1

Я работаю над C# 4.0, WPF. У меня есть три ListView, и все три управления имеют один и тот же ItemContainerGenerator_ItemsChanged»обработчик событий. Так что моя проблема в том, что я хочу, чтобы найти хозяина ListView из обработчика событий.Найти хост из ItemContainerGenerator.itemChanged Event

lst1.ItemContainerGenerator.ItemsChanged += new System.Windows.Controls.Primitives.ItemsChangedEventHandler(ItemContainerGenerator_ItemsChanged); 

lst2.ItemContainerGenerator.ItemsChanged += new System.Windows.Controls.Primitives.ItemsChangedEventHandler(ItemContainerGenerator_ItemsChanged); 

lst3.ItemContainerGenerator.ItemsChanged += new System.Windows.Controls.Primitives.ItemsChangedEventHandler(ItemContainerGenerator_ItemsChanged); 


void ItemContainerGenerator_ItemsChanged(
    object sender, 
    System.Windows.Controls.Primitives.ItemsChangedEventArgs e) 
    { 
     //TODO: Find ListView instance. 
     // **REAL Problem** 
     // ListViewItem's Visible property has been set based on the deletion 
     // button click, so at one place i have to get the count of rows which 
     // are visible and proceed with related buttons enable/disable operation. 
    } 
+0

Пожалуйста, встаньте вопрос, если это не ясно. – Mohanavel

ответ

2

Самым простым решением было бы использовать лямбды как обработчики событий, так что вы можете направить экземпляр ListView на свой «реальный» обработчик.

lst1.ItemContainerGenerator.ItemsChanged += 
    (o, e) => this.ListViewGeneratorItemsChanged(o, e, lst1); 

lst2.ItemContainerGenerator.ItemsChanged += 
    (o, e) => this.ListViewGeneratorItemsChanged(o, e, lst2); 

lst3.ItemContainerGenerator.ItemsChanged += 
    (o, e) => this.ListViewGeneratorItemsChanged(o, e, lst3); 

void ListViewGeneratorItemsChanged(object sender, ItemsChangedEventArgs e, ListView listView) 
{ 
    // We have the ListView and also the ItemContainerGenerator (in sender) 
} 
+0

я могу получить только ItemContainerGenerator, мне нужно, чтобы получить какую-либо один из list list, т.е. lst1 или lst2 или lst3. ItemContainerGenerator содержит хост как приватный ate, поэтому я не смог получить доступ к списку, к которому он принадлежит. – Mohanavel

+0

@Mohanavel: Обновлен мой ответ, проверьте его. Я не понял вопрос правильно. – Jon

+0

ваше понимание и ответ оба правильные. – Mohanavel

 Смежные вопросы

  • Нет связанных вопросов^_^