2012-08-04 60 views
0

为了保持组织结构和跟踪WPF/XAML项目中使用的所有资源名称/密钥,我想将资源字典中使用的所有密钥存储在一个静态类中,该类用常量填充。我想我记得关于在代码中避免字符串文字的一些事情。将资源的密钥存储在静态类中是一个好主意吗?

喜欢的东西:

<!-- itemtemplates.xaml -- a resource dictionary --> 
<Style x:Key="{x:Static local:ResourceKeys.TaskItemItemTemplateKey}" ....> 
    .... 
</Style> 

// ResourceKeys.cs 
internal static class ResourceKeys { 
    internal static object TaskItemItemTemplateKey { 
     get { return __some_readonly_unique_key_object; } 
    } 
    internal static object SomeReallyUglyGradientBrushKey { 
     get { return __some_other_unique_key; } 
    } 
} 

这是一个好主意,考虑到我的项目将可能超过1000个资源达到。

回答

1

如果你有那么多的资源,你可能想按照类型,适用区域或其他可能在你的上下文中有意义的几个类来分解它。至于这样做一般:为什么不呢?例如SystemColors也是如此。

0

解决方案的问题是您必须输入两次每个资源。这对于1000个项目来说是相当有效的......所有资源名称的列表可以很容易地找到(resource.Keys)。如果你使用命名约定,你可以在花费很少的情况下输入一些命令。然后,如果您想拥有色彩资源,则可以执行一些操作:在rs.beginswith(“Color”)的Application.resources.Keys中选择rs。

+0

我使用小脚本自动生成静态类。 – Minustar 2012-08-06 15:28:46

+0

你使用T4吗? – GameAlchemist 2012-08-06 23:09:38

+0

Nope,一个小型的c#应用程序,它接收所有资源的键并将它们包装在静态只读属性中。实际上,我发现20%以上的风格都是不必要的,因为他们只是做了同样的事情。 – Minustar 2012-08-07 03:18:08

相关问题