Создать WPFon showdialog событие - PullRequest
1 голос
/ 22 июня 2011

Я создаю новое всплывающее окно, используя

PopupWindows.PaymentsSummary paymentsSummary = new PopupWindows.PaymentsSummary  
paymentsSummary.ParentWindow = Window.GetWindow(this);
paymentsSummary.ShowDialog();

в функции загрузки в окне Сводка платежа. У меня есть

    private void Window_Loaded(object sender, RoutedEventArgs e)
    {
        basepage.payments.BindPaymentSummaryToDataGrid(uiActiveItems, basepage.user.terminal.TerminalId, true);
        basepage.payments.BindPaymentSummaryToDataGrid(uiInActiveItems, basepage.user.terminal.TerminalId, false);
    }

Функция:

    public void BindPaymentSummaryToDataGrid(DataGrid dgrid, int terminalId, bool isActivePayment)
    {
        BLPinNumber pins = new BLPinNumber();
        string pinNumber = String.Empty;
        long pinId = pins.getPinId(terminalId, ref pinNumber);
        using (var dbEntities = new DatabaseAccess.Schema.Entities())
        {
              dgrid.DataContext = dbEntities.getPaymentRecordsByPinId((int)pinId, isActivePayment);
        }
    }

Приведенный выше код вызывает Stored Proc в SQL Server и возвращает объект,

Однако, когда приложение запускается, я получаю ошибку при нажатии, чтобы показать всплывающее окно на следующей строке paymentSummary.ShowDialog ();

The ObjectContext instance has been disposed and can no longer be used for operations that require a connection.

Я обработал это до следующего кода в XAML для сетки данных

DataGrid  ItemsSource="{Binding}" Grid.Column="{Binding}"

Если я удаляю этот код, он работает, но данные не загружаются obvioulsy.

Так что я считаю, что мне нужно сделать, это связать метод данных с методом onShowDialog.

Как мне создать это?

Или есть лучший способ сделать это, используя платформу Entity, я привык к ASP.NET, где работа с DATAGRIDS кажется проще, если немного менее мощной.

Большое спасибо

1 Ответ

1 голос
/ 22 июня 2011

Ваша проблема с отложенной загрузкой !, у вас есть 2 варианта:

  1. выбрать данные с быстрой загрузкой (измените getPaymentRecordsByPinId).
  2. не удаляйте dbEntities, пока всплывающее окнооткрыть.
...