WPF如何查找单击的列表框项目

WPF如何查找单击的列表框项目,wpf,button,listbox,click,listboxitem,Wpf,Button,Listbox,Click,Listboxitem,我有一个WPF应用程序,其中有一个列表框,其中填充了“Match”类型的项。 如何使按钮(包含在项目中)实际选择项目,以便提取值 这是我的代码:两者都不起作用,因为单击按钮实际上并没有选择项目 private void LayButton_Click(object sender, RoutedEventArgs e) { var x = (Market)ListBoxSelectedMarket.SelectedItem; var y = (sender as ListBoxIt

我有一个WPF应用程序,其中有一个列表框,其中填充了“Match”类型的项。 如何使按钮(包含在项目中)实际选择项目,以便提取值

这是我的代码:两者都不起作用,因为单击按钮实际上并没有选择项目

private void LayButton_Click(object sender, RoutedEventArgs e)
{
    var x = (Market)ListBoxSelectedMarket.SelectedItem;
    var y = (sender as ListBoxItem);

}

谢谢

我没有做太多的WPF编程,但是如果按钮与WinForms容器对象的工作方式相同,您可以尝试获取该按钮的父对象。

您应该能够从单击的按钮中使用DataContext并从中获取ListBoxItem容器,然后选择它

private void LayButton_Click(object sender, RoutedEventArgs e)
{  
    Button button = sender as Button;
    var dataContext = button.DataContext;
    ListBoxItem clickedListBoxItem = ListBoxSelectedMarket.ItemContainerGenerator.ContainerFromItem(dataContext) as ListBoxItem;
    clickedListBoxItem.IsSelected = true;
}

如果您要绑定到一个对象,另一种方法可以是(在VB中)

然后,这将为您提供一个要使用的对象实例,并在列表框中保存所有映射字段

Private Sub OTC_Settled_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs)
        Dim pr_YourObject As New YourObject
        Dim btn As Button = CType(sender, Button)
        OTC = DirectCast(btn.DataContext, pr_YourObject)
     End Sub