2013-11-02 26 views
0

对于我的项目中的每个用户控件。 我添加到XAML用于合并字典:为每个用户控件合并资源字典

<UserControl.Resources> 
    <ResourceDictionary> 
     <ResourceDictionary.MergedDictionaries> 
      <ResourceDictionary Source="MyStyles.xaml" /> 
     </ResourceDictionary.MergedDictionaries> 
    </ResourceDictionary> 
</UserControl.Resources> 

既要具有可定制的款式和颜色。

告诉我这样做是正确的吗? 它不会降低性能?

+1

如果你想要跨越项目的这个字典,那么为什么你要在每个UserControl中添加,你应该添加到App.XAML中。 –

回答

1

资源通过遍历逻辑树来解决。从MSDN -

  1. 查找过程检查通过设置该属性的元素定义的资源字典中所要求的关键。
  2. 查找过程然后向上遍历逻辑树到父元素及其资源字典。这一直持续到达到根元素 。
  3. 接下来,检查应用程序资源。应用程序资源是资源字典中由WPF应用程序的 应用程序对象定义的资源。

正如上面第3点中提到,资源查找最终将搜索它的应用程序资源。所以你不需要在所有的用户控件中添加相同的资源。您可以简单地将它们放在每个UserControl都可以访问资源的地方。

简而言之,App.xaml是放置所有用户控件所需的合并资源字典的正确位置。