Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/265.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从ItemContainerGenerator.itemChanged事件查找主机_C#_Wpf_Itemcontainergenerator - Fatal编程技术网

C# 从ItemContainerGenerator.itemChanged事件查找主机

C# 从ItemContainerGenerator.itemChanged事件查找主机,c#,wpf,itemcontainergenerator,C#,Wpf,Itemcontainergenerator,我正在研究C#4.0,WPF。我有三个ListView,所有三个控件都有相同的ItemContainerGenerator_ItemsChanged“事件处理程序。因此,我的问题是我想从事件处理程序中查找主机ListView lst1.ItemContainerGenerator.ItemsChanged += new System.Windows.Controls.Primitives.ItemsChangedEventHandler(ItemContainerGenerator_ItemsC

我正在研究C#4.0,WPF。我有三个ListView,所有三个控件都有相同的ItemContainerGenerator_ItemsChanged“事件处理程序。因此,我的问题是我想从事件处理程序中查找主机
ListView

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.
    }

最简单的解决方案是使用lambda作为事件处理程序,这样您就可以将
ListView
实例转发给“真正的”处理程序


我可能只获取ItemContainerGenerator,我需要获取列表视图本身的任何一个。例如,lst1、lst2或lst3。ItemContainerGenerator作为私有成员持有主机,因此我无法访问它所属的列表。@Mohanavel:更新了我的答案,请检查。我没有正确理解问题。
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)
}