Trouvez l'hôte de l'événement ItemContainerGenerator.itemChanged
-
14-10-2019 - |
Question
Je travaille sur C # 4.0, WPF. J'ai trois ListView, et les trois contrôles ont le même ItemContainerGenerator_ItemsChanged » gestionnaire d'événements. Donc, mon problème est que je veux trouver le ListView
hôte dans le gestionnaire d'événements.
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.
}
La solution
La solution la plus simple serait d'utiliser lambdas comme gestionnaires d'événements afin que vous puissiez transmettre l'instance de ListView
à votre gestionnaire « réel ».
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)
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow