【问题标题】:WPF How do I find which ListBox item was clickedWPF 如何找到单击了哪个 ListBox 项
【发布时间】:2011-06-12 20:12:38
【问题描述】:
我有一个 WPF 应用程序,其中有一个列表框,其中填充了“匹配”类型的项目。
如何使按钮(包含在项目中)实际选择项目以便我可以提取值?
这是我的代码:两者都不起作用,因为单击按钮实际上并没有选择项目
private void LayButton_Click(object sender, RoutedEventArgs e)
{
var x = (Market)ListBoxSelectedMarket.SelectedItem;
var y = (sender as ListBoxItem);
}
谢谢
【问题讨论】:
标签:
wpf
button
listbox
click
listboxitem
【解决方案1】:
如果您要绑定到一个对象,另一种方法可能是(在 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】:
您应该能够使用单击的 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;
}
【解决方案3】:
我没有做过太多的 WPF 编程,但是如果它与 WinForms 容器对象的工作方式相同,您可以尝试获取按钮的父级。