WPF - если пользовательский элемент управления поставляется с ViewModel - PullRequest
3 голосов
/ 21 декабря 2009

Я собираюсь использовать пользовательский элемент управления, разработанный другой командой (в той же компании), и для разрабатываемого приложения мы пытаемся описать все привязки данных в XAML.

Теперь, если я использую сторонний пользовательский элемент управления, стоит ли ожидать от него предоставления базовой ViewModel с крючками для моего кода или я должен ожидать написания кода, связывающего пользовательский элемент управления с ViewModel по моему выбору?

Приветствия

AWC

Ответы [ 3 ]

3 голосов
/ 21 декабря 2009

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

Тем не менее, общедоступная ViewModel, вероятно, будет менее полезна, когда ожидается повторное использование элемента управления. Элемент управления может использовать ViewModel внутренне , но это следует держать в секрете. Затем хост-приложение использует элемент управления аналогично любому другому элементу управления WPF и создает свою собственную модель представления для привязки элемента управления к приложению.

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

1 голос
/ 21 декабря 2009

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

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

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

1 голос
/ 21 декабря 2009

Напишите класс контроллера самостоятельно. Повторно используемый элемент управления не должен знать, с каким типом данных он работает, если только он специально не написан для него. Но тогда это было бы не очень многоразово:)

...