EF with Multiple WPF Windows and Observable Collection

I have an assignment where I need to work with two WPF Windows (Main Window and an AddEditDialog) and Entity Framework. I need to be able to load from the database to my listview in the main window and then updated or add new objects. Currently, it's working but I think that the code can be optimized or rewritten according to best practices.

Is there a way to avoid writing these two lines of code after every CRUD operation?

        PeopleCollection = new ObservableCollection<Person>(ctx.People.ToList());
        lstPeople.DataContext = PeopleCollection;

Here is my code from the main window:

public partial class MainWindow : Window
{
    public static DBContextPerson ctx;
    static ObservableCollection<Person> PeopleCollection;

    public MainWindow()
    {
        InitializeComponent();
        ctx = new DBContextPerson();
        PeopleCollection = new ObservableCollection<Person>(ctx.People.ToList());
        lstPeople.DataContext = PeopleCollection;
    }

    private void MenuItem_AddPerson(object sender, RoutedEventArgs e)
    {
        AddEditDialogxaml dlg = new AddEditDialogxaml(this);
        if (dlg.ShowDialog() == true)
        {
            MessageBox.Show("Success");
            PeopleCollection = new ObservableCollection<Person>(ctx.People.ToList());
            lstPeople.DataContext = PeopleCollection;
        }
    }

    private void lstPeople_MouseDoubleClick(object sender, MouseButtonEventArgs e)
    {
        Person currPerson = lstPeople.SelectedItem as Person;
        if (currPerson == null) return;

        AddEditDialogxaml dlg = new AddEditDialogxaml(this, currPerson);
        if (dlg.ShowDialog() == true)
        {
            MessageBox.Show("Success");
        }
    }

    private void MenuItem_Delete(object sender, RoutedEventArgs e)
    {
        int index = lstPeople.SelectedIndex;
        if (index < 0) return;

        int id = PeopleCollection[index].Id;

        MessageBoxResult result = MessageBox.Show(this, "Are you sure you want to delete?", "Confirm Delete", MessageBoxButton.OKCancel, MessageBoxImage.Warning);
        if (result == MessageBoxResult.OK)
        {
            var lstDelete = ctx.People.Where(p => p.Id == id).ToList();
            Person person = lstDelete[0];
            ctx.People.Remove(person);
            ctx.SaveChanges();
        }
        PeopleCollection = new ObservableCollection<Person>(ctx.People.ToList());
        lstPeople.DataContext = PeopleCollection;
    }
}

}

Here is my code from the other dialog window:

public partial class AddEditDialogxaml : Window
{
    DBContextPerson ctx;
    private Person currPerson; //NULL WHEN ADDING

    //Person currPerson = null OPTIONAL/DEFAULT VALUE
    public AddEditDialogxaml(Window parent, Person __currPerson = null)
    {
        InitializeComponent();
        Owner = parent;

        ctx = new DBContextPerson();

        //********* NOT NULL WHEN EDITING
        currPerson = __currPerson;
        if (currPerson != null)
        {
            tbName.Text = currPerson.Name;
            tbAge.Text = currPerson.Age + "";
            lblId.Content = currPerson.Id;
            cmbGender.Text = currPerson.Gender.ToString();
        }
    }

    private void Button_Save(object sender, RoutedEventArgs e)
    {
        string name = tbName.Text;
        int.TryParse(tbAge.Text, out int age);
        Enum.TryParse(cmbGender.Text, out Person.GenderEnum gender);
        DBContextPerson ctx = MainWindow.ctx;
        if (currPerson == null)
        {
            //ADD NEW PERSON
            Person p = new Person() { Name = name, Age = age, Gender = gender };
            ctx.People.Add(p);
        }
        else
        {
            //UPDATE PERSON
            currPerson.Name = name;
            currPerson.Age = age;
            currPerson.Gender = gender;
        }
        ctx.SaveChanges();
        DialogResult = true;
    }

    private void Button_Cancel(object sender, RoutedEventArgs e)
    {
        DialogResult = false;
    }
}

}

Any feedback is greatly appreciated.