目前,我在窗口中定义了一些静态资源和使用这些资源的样式。我想将该标记移至MainSkin.xaml,然后能够在需要该样式的所有窗口中引用它。
如果仅将标记移到上方,则会出现“在'System.Windows.StaticResourceExtension'上提供值”的异常。我以为它找不到我要引用的样式?我需要以某种方式合并/链接吗?
最佳答案
在WPF和Silverlight中,可以创建所需数量的任意资源字典。这纯粹是资源的逻辑组织。添加到外部资源字典中然后又合并到例如Page.Resources
的资源与直接添加到Page.Resources
的资源之间没有区别。
在实践中,我们通常定义许多资源字典:
全局资源字典:这些资源字典被合并到App.xaml
中,这将使它们自动可用于应用程序中的所有页面/窗口/用户控件。
特定资源字典,其中包含特定于给定窗口,页面/用户控件的资源。MainSkin.xaml
应该特定于MainWindow
(如名称所示)。这只是一个建议,您可以根据需要自由执行;)但是,在您的情况下,如果您有在多个地方使用的资源,我宁愿创建一个全局资源字典,将其合并到App.xaml
并添加他们在那里。
干杯,
劳伦特