Удалить объекты из ListBox в WPF?

Я пытаюсь удалить объекты из поля списка, которое является связанными данными. Вот снимок экрана, как поле списка похоже.

alt text

Это - код, который добавляет объекты в списках.

    public class Task
    {
        public string Taskname { get; set; }

        public Task(string taskname)
        {
            this.Taskname = taskname;
        }
    }

    public void GetTask()
    {
        taskList = new List
                           {
                               new Task("Task1"),
                               new Task("Task2"),
                               new Task("Task3"),
                               new Task("Task4")
                           };

        lstBxTask.ItemsSource = taskList;
    }

Это - код Xaml,

 
                        
            
                
                    
                                            
                                    
            
        
    

Каждый раз, когда объект в поле списка выбран, удалите (x), кнопка отображена. При нажатии это должно удалить тот объект из поля списка. Кто-либо может сказать мне, как я могу сделать это?

5
задан Glorfindel 27 July 2019 в 11:07
поделиться

2 ответа

Попробуйте использовать ObservableCollection вместо простого List .

ObservableCollection будет уведомлять систему привязки WPF всякий раз, когда ее содержимое изменяется. Следовательно, вам нужно будет только удалить элемент из списка, и пользовательский интерфейс будет обновлен.

7
ответ дан 18 December 2019 в 09:05
поделиться

хорошо, вот что я сделал. Observablecollection работал как шарм.

private ObservableCollection<Task> taskList;

public void GetTask()
        {
            taskList = new ObservableCollection<Task>
                               {
                                   new Task("Task1"),
                                   new Task("Task2"),
                                   new Task("Task3"),
                                   new Task("Task4")
                               };

            lstBxTask.ItemsSource = taskList;
        }

 private void btnDelete_Click(object sender, RoutedEventArgs e)
        {
            var button = sender as Button;
            if (button != null)
            {
                var task = button.DataContext as Task;

                ((ObservableCollection<Task>) lstBxTask.ItemsSource).Remove(task);
            }
            else
            {
                return;
            }
        }
11
ответ дан 18 December 2019 в 09:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: