目前,我在窗口中定义了一些静态资源和使用这些资源的样式。我想将该标记移至MainSkin.xaml,然后能够在需要该样式的所有窗口中引用它。

如果仅将标记移到上方,则会出现“在'System.Windows.StaticResourceExtension'上提供值”的异常。我以为它找不到我要引用的样式?我需要以某种方式合并/链接吗?

最佳答案

在WPF和Silverlight中,可以创建所需数量的任意资源字典。这纯粹是资源的逻辑组织。添加到外部资源字典中然后又合并到例如Page.Resources的资源与直接添加到Page.Resources的资源之间没有区别。

在实践中,我们通常定义许多资源字典:


全局资源字典:这些资源字典被合并到App.xaml中,这将使它们自动可用于应用程序中的所有页面/窗口/用户控件。
特定资源字典,其中包含特定于给定窗口,页面/用户控件的资源。


MainSkin.xaml应该特定于MainWindow(如名称所示)。这只是一个建议,您可以根据需要自由执行;)但是,在您的情况下,如果您有在多个地方使用的资源,我宁愿创建一个全局资源字典,将其合并到App.xaml并添加他们在那里。

干杯,
劳伦特

08-26 14:31
查看更多