使用所选项目作为参数的 SelectionChanged ListBox 事件调用方法

Calling method on SelectionChanged ListBox event with the selected item as parameter

我正在尝试调用一种方法,该方法根据已选择的 ListBoxItem 用数据填充 table。

// Setting the ListBoxItems
myListBox.ItemsSource = list;
// Calling the method when the ListBox's selection changes
myListBox.SelectionChanged += LbItem_Select;

上面的代码片段无法工作,因为 LbItem_Select 事件处理程序没有将当前选中的项目作为参数获取。

这是事件处理程序:

private void LbItem_Select(object sender, RoutedEventArgs e)
{
    var lbItem = sender as ListBoxItem;
    lbItemContent = lbitem.Content.ToString();
    // fill the table according to the value of lbItemContent
}

我怎样才能做到这一点?

当您处理事件时,发送者是与事件相关的对象。 myListBox.SelectionChanged 是ListBox的一个事件。所以发件人是列表框,而不是项目。试试这个:

private void LbItem_Select(object sender, RoutedEventArgs e)
{
    var listBox = sender as ListBox;
    // Or use myListBox directly if you have the ListBox available here
    
    var item = listBox.SelectedItem;
    // Do whatever with the item
}