WPF привязка данных: база данных или объекты? - PullRequest
1 голос
/ 24 января 2009

Я пытаюсь создать это:

Tag1 имеет упорядоченный список объектов: O1, O3, O2. Tag2 имеет упорядоченный список объектов: O1, O4.

Каждый раз, когда я щелкаю тег, я хочу видеть список объектов. Таким образом, нажатие на Tag1 отобразит в списке:

  • О1
  • O3
  • O2

Но я бы хотел сохранить автообновление, чтобы каждый раз, когда я редактировал или добавлял / удалял объект , оно автоматически обновлялось (полагаю, мне нужно реализовать что-то вроде интерфейсов INotifyCollectionChanged и INotifyPropertyChanged ?).

Я мог бы использовать базу данных и иметь таблицы Tag, Object и TagObject, последние с TagID и ObjectID. Но я также хотел бы избежать баз данных, так как это настольное приложение.

Я мог бы также использовать такие объекты, как ObservableCollections, но у меня проблема с дублированием объектов. Я могу использовать ссылки на объекты, но это становится грязным.

У кого-нибудь есть предложения, как это сделать?

Спасибо.

Ответы [ 2 ]

1 голос
/ 24 января 2009

Переместите всю логику, управляющую обновленными данными, со страницы WPF в другой класс, который выталкивает новые данные на страницу WPF, когда они изменяются, а не WPF вытягивает данные из объектов.

Вот пример кода:

class WpfPage
{
   public List OrderedListForTag1 { set { /* whatever GUI binding code you need to deal with the new list for tag 1 */ }


   public List OrderedListForTag2 { set { /* whatever GUI binding code you need to deal with the new list for tag 2*/ }

}

class WpfPresenter
{
  WpfPage thePage;

  public void Tag1Selected()
  {
      //Calculate changes to 01, 02, 04 etcetce
      //If changed, update the page
      thePage.OrderedListForTag1 = //new list of objects
  }
}

Это один из шаблонов моделей-видов-контроллеров, который очень распространен при построении графического интерфейса. Эта серия статей охватывает концепции.

1 голос
/ 24 января 2009

Один из вариантов - создать объект, содержащий набор данных (пространство имен System.Data). Внутри набора данных он будет иметь 3 таблицы, которые будут связаны с использованием определенных внешних ключей так же, как если бы он находился в базе данных. Позже они могут быть сохранены в XML, если это необходимо.

Ваш объект должен будет затем представить представление данных, которое может быть установлено как текстовый текст данных и также привязано.

Редактирование набора данных в коде, затем обновление экрана, а редактирование экрана обновит набор данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...