WPF如何查找单击了哪个ListBox项

时间:2011-01-20 23:42:26

标签: wpf button listbox click listboxitem

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

这是我的代码:由于点击按钮实际上没有选择项目

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

}

由于

3 个答案:

答案 0 :(得分:12)

您应该能够使用单击的Button中的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;
}

答案 1 :(得分:0)

如果你绑定到一个对象,另一种方法可能是(在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

答案 2 :(得分:-1)

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