Как создать многоразовый пользовательский элемент управления внутри пользовательского элемента управления в WPF? - PullRequest
3 голосов
/ 24 марта 2012

Я использую WPF с фреймворком WAF.

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

Я подумал, эй, это многоразово, давайте поместим егов своем собственном пользовательском контроле.

Я могу заставить все работать нормально, если я игнорирую внутренний пользовательский элемент управления и просто "сглаживаю" его, если хотите, но попытка инкапсулировать его заставляет меня задуматься о том, какой подход лучше.Должен ли этот пользовательский элемент управления «полномочиями» иметь свою собственную выделенную модель представления?Должно ли оно вместо этого предоставлять свои данные через свойства зависимостей?Какой наилучший подход?

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

enter image description here

1 Ответ

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

Должен ли этот пользовательский элемент управления «учетными данными» иметь собственную модель выделенного представления? Должно ли оно вместо этого предоставлять свои данные через свойства зависимостей? Какой лучший подход?

UserControl может служить двум целям -

Если вы хотите использовать его в качестве «Контроля» - что часто имеет место в подобной ситуации, я бы отнесся к этому как к 100% представлению. Таким образом, я бы не стал делать UserControl с ViewModel вообще (по крайней мере, не публично), а выставлял бы его свойства через Dependency Properties. Это обеспечивает наибольшую гибкость с точки зрения повторного использования, поскольку UserControl действует как любой другой FrameworkElement и может быть вставлен и привязан к вашим собственным свойствам в другом месте, как и любой другой элемент управления.

Однако, когда UserControl действует как View для ViewModel, все иначе. Здесь цель не повторное использование, а разделение проблем между вашим View и VM.

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

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