/// <summary>
        ///
        /// </summary>
        private void Page_dialog_ApplyingChanges(object sender, CancelRoutedEventArgs e)
        {
            bool isNew = (Page_dialog.Content as Oltp.PageRow).RowState == DataRowState.Added;

            // When adding a new page, make sure it is unique
            if (isNew)
            {
                Oltp.PageDataTable tbl;
                using (OltpLogicClient proxy = new OltpLogicClient())
                {
                    tbl = proxy.Service.Page_Get(this.Window.CurrentAccount.ID, _urlField.Text, true, -1);
                }

                if (tbl.Rows.Count > 0)
                {
                    MessageBoxError("Page already exists.", null);
                    e.Cancel = true;
                    return;
                }
            }

            Dialog_ApplyingChanges <Oltp.PageDataTable, Oltp.PageRow>(
                _pages,
                Page_dialog,
                typeof(IOltpLogic).GetMethod("Page_Save"),
                e);

            if (e.Cancel)
            {
                return;
            }

            // Update with new page GK
            if (isNew && _reservationTable != null)
            {
                foreach (Oltp.GatewayReservationRow row in _reservationTable.Rows)
                {
                    row.PageGK = (Page_dialog.Content as Oltp.PageRow).GK;
                }
            }

            Oltp.GatewayReservationDataTable changes = (Oltp.GatewayReservationDataTable)_reservationTable.GetChanges();
            if (changes != null)
            {
                try
                {
                    using (OltpLogicClient proxy = new OltpLogicClient())
                    {
                        proxy.Service.GatewayReservation_Save(changes);
                        _reservationTable.AcceptChanges();
                    }
                }
                catch (Exception ex)
                {
                    MessageBoxError("Page was saved but gateway reservations were not.", ex);
                    e.Cancel = true;
                }
            }
        }