Silverlight棱镜和';松动';样式文件

Silverlight棱镜和';松动';样式文件,silverlight,coding-style,prism,Silverlight,Coding Style,Prism,我们正在考虑使用PRISM框架启动一个新的Silverlight项目(从模块等中获益),但我仍然不太清楚最佳的样式设计方法。理想情况下,我希望有一个可编辑的XAML文件(整个项目可能只有一个),其中包含应用程序的样式,这样就可以编辑它们来更改应用程序的外观,而无需重新编译所有内容。 这是人们使用的方法吗?我想它需要在启动时加载文件,并应用我认为不会带来巨大开销的样式 只是想知道人们用什么方法 感谢您花时间在Silverlight(和WPF)中,典型的/正常的方法是将您的样式和画笔保存在资源字典中

我们正在考虑使用PRISM框架启动一个新的Silverlight项目(从模块等中获益),但我仍然不太清楚最佳的样式设计方法。理想情况下,我希望有一个可编辑的XAML文件(整个项目可能只有一个),其中包含应用程序的样式,这样就可以编辑它们来更改应用程序的外观,而无需重新编译所有内容。 这是人们使用的方法吗?我想它需要在启动时加载文件,并应用我认为不会带来巨大开销的样式

只是想知道人们用什么方法

感谢您花时间在Silverlight(和WPF)中,典型的/正常的方法是将您的样式和画笔保存在资源字典中。然后可以随时交换这些模板以更改布局、颜色和控件模板。您可以将它们包含在生成应用程序时生成的XAP或独立程序集中

要记住的是,资源文件可以在不同的级别加载。将应用程序级别降低到单个控件的级别。在较低级别加载的词典将优先于较高级别的词典。对我来说,把它看作是一个层次是很有帮助的。

以下是我的方法-

在App.xaml中,您需要像这样声明一个
MergedDictionaries
元素

<Application.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="Styles\Colors.xaml" />
            <ResourceDictionary Source="Styles\Brushes.xaml" />
            <ResourceDictionary Source="Styles\Typeography.xaml" />
            <ResourceDictionary Source="Styles\ModuleAStyles.xaml />
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</Application.Resources>
这再次提到了颜色“轻”和“最轻”。这些存在于Colors.xaml文件中

    <!--Flat Diagonal Gradient Lightest-->
<LinearGradientBrush x:Key="FlatDiagonalGradientLightest"
                     StartPoint="0,0"
                     EndPoint="1,1">
    <GradientStop Color="{StaticResource ResourceKey=Light}"
                  Offset="0" />
    <GradientStop Color="{StaticResource ResourceKey=Lightest}"
                  Offset="1" />
</LinearGradientBrush>
<Color x:Key="Light"
       A="255"
       R="190"
       G="190"
       B="190" />
<Color x:Key="Lightest"
       A="255"
       R="250"
       G="250"
       B="250" />
TextBlock
现在在Typeography.xaml中使用了“ApplicationTitle”样式,它从brush.xaml中的“FlatGradientLightest”
LinearGradientBrush
加载它的
前景
笔刷,然后从colors.xaml文件中的
Color
资源加载两种颜色

有点酷吧


希望有帮助。

Silverlight 3直接支持浏览器外应用程序
<Color x:Key="Light"
       A="255"
       R="190"
       G="190"
       B="190" />
<Color x:Key="Lightest"
       A="255"
       R="250"
       G="250"
       B="250" />
<TextBlock Text="Menu Module Loaded" Style="{StaticResource ResourceKey=ApplicationTitle}" />