Добавление кнопки в конце списка

Ситуация следующая - изучаю WPF MVVM, но никак не могу найти ответ на казалось бы банальный вопрос. У меня есть listbox который привязан к VM, в конце каждой строки есть кнопку при нажатии на которую убавляется число. Но проблема в том, что если не выбрать ячейку, то выйдет ошибка. Я не понимаю как мне подвязать Selected к кнопку. Фрагмент кода xaml:

<ListBox ItemsSource="{Binding Events}" x:Name="MylistBox">
            <ListBox.ItemTemplate>
                <DataTemplate>
                    <Grid>
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="100"></ColumnDefinition>
                            <ColumnDefinition Width="250"></ColumnDefinition>
                            <ColumnDefinition Width="*"></ColumnDefinition>
                        </Grid.ColumnDefinitions>

                        <Image Source="{Binding Img}" Grid.Column="0"></Image>

                        <StackPanel Grid.Column="1" >

                            <TextBlock Text="{Binding Name}"/>
                            <TextBlock Text="{Binding Location}"/>
                            <TextBlock Text="{Binding Ganre}"/>
                            <TextBlock Text="{Binding Date_Time}"/>
                            <TextBlock Text="{Binding Tikets, StringFormat='Осталось билетов {0}'}"/>

                        </StackPanel>

                        <Button  Grid.Column="3" Command="{Binding DataContext.AddCommand_Buy, Mode=OneWay, ElementName=MylistBox}" CommandParameter="{Binding ElementName=MylistBox, Path=SelectedItem}">Купить</Button>

                    </Grid>
                </DataTemplate>
            </ListBox.ItemTemplate>
        </ListBox>

Кусок кода VM

 public class ApplicationViewModel : INotifyPropertyChanged
{
    private Event selectedEvent;
    public ObservableCollection<Bug> Bugs { get; set; }
    

    public ObservableCollection<Event> Events { get; set; }


    private RelayCommand addCommand_Buy;
    public RelayCommand AddCommand_Buy
    {
        get
        {

            

            return addCommand_Buy ??
              (addCommand_Buy = new RelayCommand(obj =>
              {

                  try
                  {
                      if (selectedEvent.Tikets == 0)
                      {

                          MessageBox.Show("Билетов больше нет!");
                      }
                      else
                      {
                          selectedEvent.Tikets -= 1;
                          try
                          {

                              Bug findbugs = Bugs.Where(item => item.Name == selectedEvent.Name).FirstOrDefault();

                              if (findbugs == null)
                              {

                                  Bugs.Insert(0, new Bug { Date_Time = selectedEvent.Date_Time, Name = selectedEvent.Name, Tikets_all = 1, Price = selectedEvent.Price });
                              }
                              else
                              {

                                  findbugs.Tikets_all += 1;
                                  findbugs.Price = findbugs.Tikets_all * selectedEvent.Price;
                              }
                          }
                          catch
                          {
                              Bugs.Add(new Bug { Date_Time = selectedEvent.Date_Time, Name = selectedEvent.Name, Tikets_all = 1, Price = selectedEvent.Price });
                          }

                      }
                  }
                  catch
                  {
                      MessageBox.Show("Вы не выбрали мероприятие! Необходимо сначала нажать на нужное мероприятие и потом на кнопку купить!");
                  }


              }));
        }
    }





    private RelayCommand addOpen_Bug;
    public RelayCommand AddOpen_Bug
    {
        get
        {
            return addOpen_Bug ??
              (addOpen_Bug = new RelayCommand(obj =>
              {

                  var window = Application.Current.Windows;

                  window[1].Show();

              }));

        }
    }


    public Event SelectedEvent
    {

        get { return selectedEvent; }
        set
        {
            selectedEvent = value;
            OnPropertyChanged("SelectedEvent");
        }
    }

    public ApplicationViewModel()
    {


        Bugs = new ObservableCollection<Bug>();


        Events = new ObservableCollection<Event>
        {
            new Event {Event_name = "Концерт",
                Name = "Co",
                Title = "Говорят, если вы не были на «Чиже» — вы не слышали русский рок! Интеллигентные, хулиганские и романтичные песни, которые мы любим уже ни один десяток лет, в живом исполнении. Однажды Сергей Чиграков сказал: «И если суждено оставить хоть какой-то след в истории, надеюсь, он будет связан с моей музыкальной деятельностью. Пусть меня запомнят не по сборникам стихов и даже не по фонограммам, а по живым выступлениям». И это действительно так. Концерты коллектива — это встречи добрых друзей, по которым скучаешь и c нетерпением ждешь.",
                Ganre = "Рок",
                Date_Time="10 апреля 2023 | 10:00",
                Location = "ДК железнодорожников",
                Tikets=10,
                Price=500,
                Img = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "../../Resources/Image/Концерт.jpg")
            },
            new Event {Event_name = "Концерт",
                Name = "Чиж & Co",
                Title = "Говорят, если вы не были на «Чиже» — вы не слышали русский рок! Интеллигентные, хулиганские и романтичные песни, которые мы любим уже ни один десяток лет, в живом исполнении. Однажды Сергей Чиграков сказал: «И если суждено оставить хоть какой-то след в истории, надеюсь, он будет связан с моей музыкальной деятельностью. Пусть меня запомнят не по сборникам стихов и даже не по фонограммам, а по живым выступлениям». И это действительно так. Концерты коллектива — это встречи добрых друзей, по которым скучаешь и c нетерпением ждешь.",
                Ganre = "Рок",
                Date_Time="10 апреля 2023 | 10:10",
                Location = "ДК железнодорожников",
                Tikets=10,
                Price=500,
                Img = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "../../Resources/Image/Концерт.jpg")
            },
        };
    }

    public event PropertyChangedEventHandler PropertyChanged;
    public void OnPropertyChanged([CallerMemberName] string prop = "")
    {
        if (PropertyChanged != null)
            PropertyChanged(this, new PropertyChangedEventArgs(prop));
    }
}

Уже несколько дней сижу и ответ найти не могу. Помогите пожалуйста.


Ответы (0 шт):