Обновите базу данных напрямую из XAML - PullRequest
1 голос
/ 18 ноября 2010

У меня есть приложение WPF, которое в настоящее время полностью загружено из XAML. Все поля, все данные связаны с XAML с использованием объектов ObjectDataProviders. У меня есть DataAccessLayer (DAL), импортированный в проект. Вызовы для извлечения данных с использованием ODP используются для отображения данных все работают.

Возможно ли выполнять вставки, обновления, удаления с использованием методов, существующих в моем DAL, непосредственно из XAML? Я пытаюсь избежать ЛЮБОГО кода позади, чтобы пользовательский интерфейс был отдельным объектом. Я не могу найти четкие примеры с вставкой, обновлением, удалением по этому вопросу. Есть мысли?

1 Ответ

2 голосов
/ 18 ноября 2010

Ни WPF, ни Xaml на самом деле не имеют никакой концепции вставки, обновления и удаления. Привязка данных связана с объектами (или случайным XML). Как только изменения в пользовательском интерфейсе (например, пользователь, вводящий значение в TextBox) были помещены в связанные объекты, работа по связыванию данных завершается. Вам решать, что вы будете делать с данными.

Не то чтобы это являлось каким-либо препятствием для цели «без кода». Обычный подход заключается в добавлении слоя между вашим представлением (Xaml) и вашими объектами данных и привязке пользовательского интерфейса к этому слою, а не к модели базового домена. (Этот слой часто называют ViewModel, но вы также увидите, что его называют другими именами, такими как Presenter. И этот общий шаблон известен как «отдельная презентация».)

Способ, которым вы разрешаете действия без необходимости задавать код, - это использование команд. Ваш промежуточный уровень не просто предоставляет свойства, ориентированные на данные. Он может предоставлять свойства, содержащие команды, и вы можете привязывать эти команды к кнопкам, гиперссылкам или элементам меню. Для этого не требуется никакого кода - все это просто обязательные выражения в Xaml. Но когда вы нажимаете кнопку, запускается соответствующий код обработчика в вашей модели представления. (ICommand - очень простой для реализации интерфейс - кнопка просто вызывает метод Execute при нажатии. И вы обычно предоставляете свою собственную реализацию - встроенные RoutedCommand и RoutedUICommand не подходят для этого сценария.)

И тогда вы можете вставить / обновить / удалить / все, что считаете нужным.

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