Как правильно стилизовать призменные области из модулей - PullRequest
1 голос
/ 26 февраля 2012

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

Я изучаю Prism с модулями и регионами, использующими WPF и MVVM.Если мы возьмем очень простой пример, в котором у меня есть ModuleAViewOne и ModuleBViewOne, и я хочу добавить их обоих в основной Shell, моя проблема связана со стилями.Я вижу главное преимущество в использовании Prism и модулей в том, что ModuleA и ModuleB могут потенциально разрабатываться различными командами разработчиков.Сказав это, есть вероятность, что они будут выглядеть полностью по-другому (по стилю), и когда они будут введены в основную оболочку, это будет выглядеть странно.стили внутри оболочки, которые контролируют внешний вид этих модулей.Это прекрасно работает, пока сам ModuleView не имеет собственных стилей .Тогда эти стили НЕ переопределяются основной оболочкой.

Каков наилучший метод (если он есть) при создании оболочки и модулей таким образом, чтобы оболочка имела полный контроль при принятии решения?как выглядят модулиТакже я предполагаю, что это желаемое поведение.Пожалуйста, поправьте меня, если я ошибаюсь.Заранее спасибо.

1 Ответ

2 голосов
/ 27 февраля 2012

Определите ваши общие стили в Shell или App.xaml. В представлениях вашего модуля в объявлении стиля используйте свойство BasedOn, чтобы гарантировать наследование большей части стиля.

Например, в App.xaml

<Style x:Key="BrightTextBlock" TargetType="{x:Type TextBlock}">
    <Setter Property="Foreground" Value="Green" />
</Style>

Затем в видах вашего модуля определите их стили следующим образом:

<Style x:Key="MyModuleViewTextBlock" 
       TargetType="{x:Type TextBlock}" 
       BasedOn="{StaticResource BrightTextBlock}">
    <Setter Property="FontSize" Value="17" />
</Style>

Это тогда получит зеленый передний план и размер шрифта 17.

Модули должны иметь максимальный контроль над своим стилем, так как стили имеют меньшую область видимости. Если вы хотите, чтобы shell полностью определяла стили, представления модуля не должны определять свои собственные стили.

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