2011-01-20 121 views
6

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

这里是我的代码:没有,因为点击该按钮实际上并没有选择项目

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

} 

感谢

工作

回答

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; 
} 
+0

工作,谢谢! – Chris 2011-01-21 10:08:08

0

我没有做太多WPF程序,但你可以尝试获取父如果它的作用与WinForms容器对象相同,该按钮的位置。

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 
相关问题