C# 在WPF中以编程方式在ListViewItem上创建单击事件

C# 在WPF中以编程方式在ListViewItem上创建单击事件,c#,wpf,listview,C#,Wpf,Listview,我正在制作一个WPF应用程序,这个应用程序有一个UserControl,它有一个列表视图 我试着创建一个点击事件监听器,但我从来没有让它正常工作,而且我还没有找到任何解决方法 我使用如下对象填充此列表视图项: List<AsesoriaClass> listaAsesorias = phpClass.getListaAsesoriasAsesor(asesor.ID); foreach (var asesoria in listaAsesorias)

我正在制作一个WPF应用程序,这个应用程序有一个UserControl,它有一个列表视图

我试着创建一个点击事件监听器,但我从来没有让它正常工作,而且我还没有找到任何解决方法

我使用如下对象填充此列表视图项:

List<AsesoriaClass> listaAsesorias = phpClass.getListaAsesoriasAsesor(asesor.ID);
            foreach (var asesoria in listaAsesorias)
            {
                AsesoriaTable data = new AsesoriaTable(asesoria.AsesoriaID.ToString(), asesoria.ClienteNombre + " " + asesoria.ClienteApellidos, asesoria.FechaInicio.ToString(), asesoria.FechaFinal.ToString());
                this.ListView.Items.Add(data);
            }
List listaAsesorias=phpClass.getlistaasesoriasor(asesor.ID);
foreach(ListaAserorias中的var asesoria)
{
AsesoriaTable data=新的AsesoriaTable(asesoria.AsesoriaID.ToString(),asesoria.ClienteNombre+“”+asesoria.ClienteApellidos,asesoria.FechaInicio.ToString(),asesoria.FechaFinal.ToString());
this.ListView.Items.Add(数据);
}
这是用户控件的XAML:

<ListView x:Name="ListView">
            <ListView.View>
                <GridView>
                    <GridViewColumn Header="ID" DisplayMemberBinding="{Binding Path=Id}" Width="100"/>
                    <GridViewColumn Header="Cliente" DisplayMemberBinding="{Binding Path=Cliente}" Width="300"/>
                    <GridViewColumn Header="Inicio" DisplayMemberBinding="{Binding Path=Inicio}" Width="200"/>
                    <GridViewColumn Header="Final" DisplayMemberBinding="{Binding Path=Final}" Width="200"/>
                </GridView>
            </ListView.View>
        </ListView>


我想制作一个点击监听器,这样,当我点击一个项目时,就会发生一些事情(开始时,我只想让它显示一个台面框)。如何执行此操作?

您只需在
SelectionChanged
上附加事件处理程序即可。像这样

 ListView.SelectionChanged += LstOnSelectionChanged;
其中
LstOnSelectionChanged
是一种方法

private void LstOnSelectionChanged(object sender, SelectionChangedEventArgs e) 
{ 
  MessageBox.Show("Anything"); 
}

您只需在
SelectionChanged
上附加事件处理程序即可。像这样

 ListView.SelectionChanged += LstOnSelectionChanged;
其中
LstOnSelectionChanged
是一种方法

private void LstOnSelectionChanged(object sender, SelectionChangedEventArgs e) 
{ 
  MessageBox.Show("Anything"); 
}

请定义“从未正确处理”,或者更好的是,放置代码以便能够帮助您修复代码。另外,请澄清,您是想在运行时创建事件处理程序,还是想在XAML中定义它?对不起。正如您在代码中看到的,我是以编程方式创建项目的,因此,我想在这些项目上指定一个点击事件,并且必须以编程方式完成,并且必须有一个索引,例如:如果我点击第二个项目,事件的索引将是1,依此类推。我希望我的解释是正确的。请随便问任何其他问题。这是一个列表视图。只需绑定其SelectedItem或SelectedIndex属性。或者,将处理程序附加到SelectionChanged事件。我建议使用数据绑定将项目添加到
列表视图
,并确定在我刚刚投票的评论中@Clemens建议的项目。WPF允许您以声明方式完成大量工作,而不是在事件处理程序中写出逻辑。您通常会将其ItemsSource属性绑定到视图模型类(google MVVM)的集合类型属性,而不是以编程方式向ListView的Items集合添加元素。视图模型还将具有所选项目的属性,ListView的SelectedItem将绑定到该属性。请定义“从未正确处理”,或者更好的是,放置代码,以便能够帮助您修复代码。另外,请澄清,您是想在运行时创建事件处理程序,还是想在XAML中定义它?对不起。正如您在代码中看到的,我是以编程方式创建项目的,因此,我想在这些项目上指定一个点击事件,并且必须以编程方式完成,并且必须有一个索引,例如:如果我点击第二个项目,事件的索引将是1,依此类推。我希望我的解释是正确的。请随便问任何其他问题。这是一个列表视图。只需绑定其SelectedItem或SelectedIndex属性。或者,将处理程序附加到SelectionChanged事件。我建议使用数据绑定将项目添加到
列表视图
,并确定在我刚刚投票的评论中@Clemens建议的项目。WPF允许您以声明方式完成大量工作,而不是在事件处理程序中写出逻辑。您通常会将其ItemsSource属性绑定到视图模型类(google MVVM)的集合类型属性,而不是以编程方式向ListView的Items集合添加元素。视图模型还将具有选定项的属性,ListView的SelectedItem将绑定到该属性。