2009-12-11 3 views
1

Я работаю над приложением Silverlight на основе бизнес-приложений, и мне нужен совет по управлению жизненным циклом контекста службы RIA.Управление жизненным циклом службы Silverlight RIA

Приложение - afer несколько упрощений - это построение одного большого элемента управления вкладкой. В начале есть 2 вкладки: список клиентов и список счетов. Это простые datagrids с фильтрацией/сортировкой и такими вещами. Пользователь может добавить/отредактировать клиента или счет-фактуру, выбрав строку и дважды щелкнув. Затем новая вкладка создается с деталями клиента или счета-фактуры. Пользователь может открыть много вкладок с разными клиентами/счетами. После редактирования пользователь может сохранить и закрыть вкладку или просто отказаться от редактирования и закрытия.

Вопрос в том, как иметь дело с контекстами данных.

Должен ли я создать его для списка клиентов, а другой для invoicelist, и когда пользователь открывает новую вкладку, я просто привязываю клиентский/invoive dataobject для управления? Это имеет то преимущество, что мне не нужно обновлять сетки после сохранения изменений. EDIT: У этого есть некоторые недостатки. Пользователь может обновить сетку - и что произойдет, чтобы открыть подробные вкладки? Пользователь также может фильтровать сетку, поэтому некоторые редактируемые записи могут быть удалены из datactx?

Другой способ - создать datacontext для каждого tabitem. Это более безопасно, но мне нужно обрабатывать освежающие сетки.

Я понятия не имею, какой метод лучше или, может быть, есть другая альтернатива?

ответ

0

Используйте один список ObservableCollection в каждом случае, и он автоматически обновит данные, когда элементы будут изменены.

+0

Да, я использую ObservableCollection и INotifiyChange. Затем моя сетка автоматически обновляется, когда пользователь меняет данные на отдельной вкладке. Мой вопрос состоял в том, что безопасно использовать один файл данных для всего приложения и последующих изменений. – tomo

+0

Главное в DataContext - это DataSource, который в этом случае является вашим ObservableCollection. Безопасно использовать его в качестве источника данных для нескольких элементов пользовательского интерфейса. Если у вас также есть несколько потоков, работающих на ObservableCollection, тогда вам нужно будет принять обычные меры предосторожности, например, чтобы только один поток мог обновлять его в любой момент времени. – sipwiz

Смежные вопросы