WPF: Можно ли использовать стили для форматирования пользовательского элемента управления для двух разных сценариев? - PullRequest
0 голосов
/ 21 октября 2011

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

Из моего ограниченного понимания WPF похоже, что стили позволили бы мне написать один UserControl и настроить его цвета и шрифты для обоих сценариев.Однако изменения немного более обширны, некоторые позиции элементов (например, TextBox) находятся в разных относительных позициях.

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

Ответы [ 2 ]

0 голосов
/ 22 октября 2011

Если вы используете шаблон, такой как MVVM (я предпочитаю MVVM Light), это довольно просто сделать.Вы должны написать одну ViewModel, которая захватывает все данные и поведение, которые вы хотите представить, и затем создать два представления так, как вам нужно, оба с использованием одной модели представления.

Этот сценарий является одним из основных намерений, стоящих заШаблон MVVM.Вы правы, что «плохо» писать дважды «поведение / слесарное дело», но мнения разные, поэтому вы не нарушаете их повторное использование.

0 голосов
/ 21 октября 2011

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

<YourUserControl Style="{StaticResource firstStyle}"/>
...