Должен ли я использовать привязку данных WPF? - PullRequest
0 голосов
/ 14 апреля 2011

У меня есть приложение WPF, которое инкапсулирует редактирование дюжины или около того XML-файлов конфигурации в одном месте, так что инженеру по развертыванию не нужно знать, где что-то может или не может быть изменено.На данный момент каждая конфигурация представлена ​​в виде своего собственного объекта с логикой для обновления различных элементов пользовательского интерфейса в качестве стандартных функций get и set.

Еще одна особенность заключается в том, что приложение должно читать более старую версию этих файлов конфигурации ископируйте любые измененные значения в новую установку.Это действительно просто, так как мы используем объектные представления каждого файла.

Я смотрел на привязку данных WPF, и хотя он отлично подходит для чтения и записи XML и отображения на различных элементах управления приложения, у меня возникли проблемывыяснить, как я буду реализовывать копирующую часть.Буду ли я вообще идти по неверному пути, используя привязку данных?

Ответы [ 2 ]

1 голос
/ 14 апреля 2011

Ответ на вопрос «Должен ли я использовать привязку данных в WPF?»почти всегда "Да".Реальный вопрос заключается в следующем: «Для чего мне использовать привязку данных WPF?»

Звучит так, как будто архитектура вашего приложения в настоящее время:

XML <--> Object Model <--> UI Controls

В WPF,Вы захотите использовать привязку данных для подключения объектной модели к элементам управления пользовательского интерфейса.Все функциональные возможности в вашей текущей объектной модели, которая копирует XML-файлы и обновляет их содержимое и т. Д., Все это происходит в другом юниверсе, если говорить о WPF.

Если методы, которые в настоящее время реализованы в вашемобъектная модель вносит изменения в свойства объектов, которые необходимо отправить в пользовательский интерфейс, все может стать немного сложнее.Например, вы можете обнаружить, что вы хотите создать Command объекты для предоставления этих методов пользовательскому интерфейсу, а затем вам нужно реализовать некоторый механизм для вызова событий PropertyChanged после того, как методы изменят свойства объектов.В зависимости от общей архитектуры вашего приложения, вы можете не захотеть интегрировать объекты WPF (например, команды) или реализовать уведомление об изменении свойства в вашей объектной модели.

Это приведет вас на территорию шаблона MVVM («слой viewmodel», на который ссылается Джо Уайт), который является способом инкапсуляции команд и уведомлений об изменении свойств (и других вещей, которые требуются в пользовательском интерфейсе WPF) без необходимости изменения базовой объектной модели.Это нормально.Когда вы делаете это в первый раз, это немного ошеломляет, в основном потому, что информация, которую вы найдете, когда вы начнете исследовать ее, покажет вам решения проблем, которых у вас может не быть (или, возможно, еще нет).Но на самом деле все не так плохо.

1 голос
/ 14 апреля 2011

WPF очень ориентирован на привязку данных, поэтому, вероятно, вы не ошибетесь, если будете использовать привязку данных в целом.

Однако вы, похоже, специально спрашиваете о привязке данных кXML. И я не понимаю, почему вы захотите это сделать.У вас уже есть объекты, которые читают и записывают ваш XML в ваши файлы конфигурации.Не дублируйте эти знания, добавляя обязательные выражения, которые выполняют одинаковую загрузку другим способом.Особенно, если ваш формат файла конфигурации периодически изменяется, вы не хотите поддерживать более одной копии кода, который читает и записывает его.

Просто привяжите свой пользовательский интерфейс к объектам, которые у вас уже есть.Если они достаточно просты, чтобы вы думали о связывании с XML, то это не похоже на то, что у вас есть какая-то причудливая логика - вы должны иметь возможность напрямую связывать свойства со своими существующими объектами, даже не добавляя viewmodel layer.

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