WPF如何找到被点击的ListBox项

7

我有一个WPF应用程序,其中有一个列表框,其中填充了类型为'Match'的项目。

如何使按钮(包含在项目内)实际选择该项目,以便我可以提取其值?

这是我的代码:由于单击按钮实际上没有选择项目,因此两个都不起作用。

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

}

谢谢

3个回答

12

您应该能够使用从单击的按钮获取的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
如果您要将对象绑定到一个控件,另一种方法是(在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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接