如何从模块中正确设置棱镜区域的样式



我的问题是一个相当高级别的概念问题,所以如果您需要更多信息,请告诉我。

我正在学习Prism,模块和区域使用WPF和MVVM。如果我们举一个非常基本的例子,其中我有ModuleAViewOneModuleBViewOne,并且我想将它们都注入到主Shell中,那么我关心的是样式。我认为使用Prism和模块的主要优势在于,ModuleA和ModuleB可能由不同的开发团队开发。也就是说,它们有可能看起来完全不同(风格上),当它们被注入主Shell时,看起来会很奇怪。

因此,我的第一个想法是在shell中提供控制这些模块外观的通用样式。在ModuleView本身拥有自己的样式之前,这一点非常有效。然后这些样式不会被主Shell覆盖。

创建一个shell和模块的最佳实践是什么(如果有的话),以便shell完全控制模块的外观。我也认为这是想要的行为。如果我错了,请纠正我。提前谢谢。

ShellApp.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完全定义样式,则模块视图不应该定义自己的样式。

最新更新