Я только начинаю в WPF и создаю простую библиотеку фильмов в качестве тестового проекта, чтобы помочь мне найти ноги.
Я храню информацию о фильме в формате XML, например:
<movie id="1" title="Back To The Future" date="1985" ... />
Фильмы появляются в списке, и при нажатии поля становятся редактируемыми. Я получил это, работая с двумя шаблонами данных для стилизации элементов списка, примененных с помощью триггера к свойству ListBoxItem.IsSelected.
Но за привязку и редактирование данных я был бы очень благодарен за некоторые советы. Я попробовал каждый из подходов ниже с различной степенью успеха. Как вы думаете, в чем смысл? Могу ли я попробовать что-нибудь еще?
Подход 1. Привязка к XML напрямую с использованием XMLDataProvider в XAML. В этом случае ListBox связывается с XmlDataProvider, а отдельные элементы управления связываются с помощью выражений XPath. Начать очень просто, но этот подход кажется сложным при редактировании данных. Нам нужно довольно много ValueConverters только для того, чтобы обеспечить правильное представление данных и их сохранение в файле XML в соответствующем формате.
Подход 2: Создайте собственный класс Movie, который получает XML и предоставляет все атрибуты фильма в качестве открытых свойств, к которым привязаны элементы управления. Это кажется более надежным и гибким, но, похоже, требует гораздо больше работы для реализации. Каждое свойство должно быть явно отображено в коде, и проверка - это боль.
Подход 3: немного похож на подход 2, но с пользовательским элементом управления Movie вместо ListBox + Шаблоны данных. Я начал с этого и быстро отказался от него, потому что не видел никаких преимуществ перед подходом 2.
Я понимаю, что это не простой вопрос и что нужно учитывать множество факторов, но любые мысли о различных плюсах / минусах (или о том, есть ли какие-то уловки, которые я пропускаю), будут оценены. Пожалуйста, дайте мне знать, если вам нужна дополнительная информация или примеры кода. И извинения, если этот вопрос неуместен или нежелателен.
Большое спасибо.