删除当前单击的ListBox项(ObservableCollcetion)

时间:2019-05-13 12:59:12

标签: c# wpf listbox

我有一个ListBox,其中包含一个ObservableCollection和一个相应的Button。 我想删除相应按钮单击上的ListBoxItem

ListBox

我添加了以下c#代码:

public ObservableCollection<DailySession> dailySession;

...

 while (reader.Read())
        {

            dailySession = new ObservableCollection<DailySession>()
            {
                new DailySession { Name =reader.GetString(0) }

            };

            DailySessions.Items.Add(dailySession);
        }

为了删除ListBoxItem,我实现了以下代码:

 private void btnClear_Click(object sender, RoutedEventArgs e)
    {
       //DailySessions is the Listbox name, btnClear is button name

        DailySessions.Items.Remove(DailySessions.SelectedItem);// returns null
        //DailySessions.Items.RemoveAt(DailySessions.SelectedIndex);// returns -1

    }

我无法获得我点击的ListBoxItem的索引。

还有其他方法可以从ListBox中删除所选项目吗?

2 个答案:

答案 0 :(得分:1)

您可以投放已点击的DataContext中的Button

private void btnClear_Click(object sender, RoutedEventArgs e)
{
    Button clickedButton = (Button)sender;
    DailySessions.Items.Remove(clickedButton.DataContext as DailySession);
}

答案 1 :(得分:0)

这应该可以解决问题:

private void btnClear_Click(object sender, RoutedEventArgs e)
{    
  DailySessions.Items.RemoveAt(DailySessions.Items.IndexOf(DailySessions.SelectedItem));
}