Кто должен нести ответственность за заполнение данных в usercontrol? - PullRequest
0 голосов
/ 20 марта 2012

Я чувствую себя немного глупо, когда спрашиваю об этом, но мне трудно найти лучшее решение для этого:

В приложении WPF у меня есть окно с пользовательским контролем. Пользовательский контроль имеет ListBox и DataGrid. ListBox заполняется из StaticResource, и всякий раз, когда что-то выбирается в ListBox, выполняется поиск в службе, которая возвращает данные, которые должны быть заполнены в DataGrid.

Ok. Я могу легко вызвать событие в usercontrol и прослушать главное окно. Это окно может затем искать данные в сервисе и затем вызывать некоторый метод populate / databind в usercontrol, который затем может обновить свой DataGrid. Это возлагает всю ответственность на главное окно.

Мне нравится разделение проблем;) и это не то, о чем должно заботиться главное окно. Если бы это не был пользовательский контроль, я бы использовал внедрение зависимости, чтобы дать ему ссылку на сервис, который может получать данные.

Как вы думаете, что я должен делать? Если я собираюсь пойти по пути DI, как бы я внедрил сервис в моем usercontrol (я могу придумать пару способов, но каков наилучший опыт?) Любое хорошее чтение по этому вопросу?

1 Ответ

2 голосов
/ 20 марта 2012

Принятый способ сделать это - создать ViewModels (на основе архитектуры MVVM). ViewModels - это объекты, разработанные специально для привязки данных.

Некоторые чтения на эту тему:

Начальное руководство

Каркас для МВВМ

http://en.wikipedia.org/wiki/Model_View_ViewModel

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