我们有一个WPF库,其中包含许多产品中使用的样式。它的组织如下。每个缩进级别都合并到上面的库中
WpfResources.xaml
Color.xaml
ButtonStyle.xaml
Color.xaml
OtherStyle.xaml
Color.xaml
SliderStyle.xaml
Color.xaml
这种方法的问题在于,您可以看到Color.xaml被添加到我添加的每个控件样式中。这可能并且我不确定会给性能带来什么影响。 Color.xaml中的所有颜色画笔,边距等都被冻结了。
如果我从控件ResourceDictionaries中删除Color.xaml,Visual Studio设计器将开始抱怨缺少StaticResources以获取Color.xaml中声明的颜色和其他内容。我可以用DynamicResources替换它们,但这不是明智的表现。
关于更好地组织风格的任何想法?
答案 0 :(得分:1)
在我们的应用程序中,我们只有ResourceDictionary
颜色。所以我们应用中的每种颜色都加载到这些文件中。然后我们为所有控件提供样式和模板XAML
文件,而不是像你说的那样分开的文件。
我学到的一件事是,如果你重复一些事情,那可能会更好。这是我们的App.xaml
文件,仅作为示例。请记住,使用一个Color.xaml
,你可以制作很多主题/皮肤!
当有人要求新风格时,只需要大约10分钟就能完成!这是:
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/Cmp.Wpf;component/CmpEstilos/Colors.xaml" /> <!-- Our Colors are here! -->
<ResourceDictionary Source="pack://application:,,,/Cmp.Wpf;component/CmpEstilos/Styles.xaml" /> <!-- Our Styles are here! -->
<ResourceDictionary Source="pack://application:,,,/Cmp.Wpf;component/CmpTemplates/Templates.xaml" /> <!-- Our Templates are here! -->
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
此代码位于App.xaml
内 - 只是为了提醒您
没有什么可以反对你的方法,但我认为如果你有一个文件负责每个“责任”将更容易维护。