Общий дизайн Вопрос о привязке данных в WPF - PullRequest
0 голосов
/ 20 августа 2009

Я начинаю использовать Binding в своем проекте WPF, и я на самом деле запутался в нескольких вещах на стороне презентации (XAML).

Итак, я хочу заполнить TreeView списком категорий. Я знаю, как правильно написать HierarchicalDataTemplate для моего экземпляра списка категорий.

<HierarchicalDataTemplate ItemsSource="{Binding Path=ChildrenCategories}" DataType="{x:Type src:Category}">
      <TextBlock Text="{Binding Path=Name}"></TextBlock>
</HierarchicalDataTemplate>

Но сейчас я не знаю, откуда взять список. У меня здесь 2 решения:

  1. Я получил Library Singleton класс которые возвращают мне право древовидность, то мне нужно использовать ObjectDataProvider в моем xaml, который позвонил бы Метод Library.Instance.Categories. (Это означает, что контроллер должен быть полностью отделен от интерфейса).

  2. Я получил Property ListCategories на моей странице (OpenUnit.xaml.cs) и связать дерево с ним.

Я не уверен насчет назначения файлов xaml.cs, для чего они созданы? Обычно он используется для хранения свойств (и выступает в качестве контроллера) или просто для создания серверной части для пользовательского интерфейса (например, для получения значений из пользовательского интерфейса?)?

Если файл xaml.cs используется в качестве контроллера, как мне связать с ним свои данные, я безуспешно перепробовал много решений, мой единственный успех был с использованием статического связывания.

Буду признателен за любые комментарии или рекомендации по поводу пользовательского интерфейса и связывания логики в WPF, надеюсь, я буду меньше путаться.

Заранее спасибо,

Борис

1 Ответ

0 голосов
/ 20 августа 2009

Прочитав эту замечательную статью, я немного запутался:

http://msdn.microsoft.com/en-us/magazine/dd419663.aspx

Статья о шаблоне ViewController модели и о том, как WPF интегрирует его. Таким образом, кажется, что файлы xaml.cs должны использоваться здесь как ViewController и должны содержать свойства. На самом деле это имеет смысл, поскольку смешивать представление и данные не рекомендуется, мы хотим, чтобы дизайнеры выполняли совершенно независимую работу.

Также для решения 2) возможно, если вы установите контекст данных для текущего файла.

...