/// <summary>
        /// Handle the delete member button click event.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="args"></param>
        private void OnDeleteMemberButton(object sender, RoutedEventArgs args)
        {
            Team      team      = (Team)TeamSelectionComboBox.SelectedItem;
            MemberTab memberTab = (MemberTab)MemberTypeTabControl.SelectedItem;

            // Find a child data-grid of the tab control
            DataGrid membersDataGrid = (DataGrid)MemberTypeTabControl.GetChildren().Find(control => control is DataGrid);

            // If we haven't selecting anything in the data grid, we can't remove anything
            if (membersDataGrid.SelectedItem == null)
            {
                return;
            }

            int currentSelectedIndex = membersDataGrid.SelectedIndex;

            team.RemoveMember(memberTab.MemberType, (Member)membersDataGrid.SelectedItem);

            if (currentSelectedIndex == membersDataGrid.Items.Count)
            {
                currentSelectedIndex -= 1;
            }

            membersDataGrid.SelectedIndex = currentSelectedIndex;
        }
        /// <summary>
        /// Handle the type selection changed.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="args"></param>
        private void OnTypeSelectionChanged(object sender, SelectionChangedEventArgs args)
        {
            // Find a child data-grid of the tab control
            DataGrid membersDataGrid = (DataGrid)MemberTypeTabControl.GetChildren().Find(control => control is DataGrid);

            if (membersDataGrid.SelectedItem == null)
            {
                return;
            }

            Type   newType = (Type)TypeSelectionComboBox.SelectedItem;
            Member member  = (Member)membersDataGrid.SelectedItem;

            // No change in type means that we don't need to do anything
            if (newType == member.GetType())
            {
                return;
            }
            Team team = (Team)TeamSelectionComboBox.SelectedItem;

            // Remove the member from the old type and move it to the new type collection in the team member map
            team.RemoveMember(member.GetType(), member);

            // Convert the member to its respective type via casting
            Member newMember = new Member();

            if (newType == typeof(Wrestler))
            {
                newMember = new Wrestler();
            }
            else if (newType == typeof(Coach))
            {
                newMember = new Coach();
            }

            // Copy the values from the old member to the converted member
            newMember.FirstName         = member.FirstName;
            newMember.LastName          = member.LastName;
            newMember.Gender            = member.Gender;
            newMember.School            = member.School;
            newMember.YearsOfExperience = member.YearsOfExperience;

            team.AddMember(newType, newMember);
        }