我有一个WPF应用程序,我想使用一些静态资源。我创建了一个包含资源的资源库XAML文件。我还通过Properties面板在项目的Resources中添加了一个字符串。
我假设我可以将这些资源与绑定表达式一起使用:
{StaticResource ResourceName}
但是visual studio告诉我没有找到资源。我是否必须在我的XAML中包含某种形式的参考?我见过的例子只包括本地资源,例如:
<Window.Resources>, <Page.Resources> etc
我不想在本地包含资源,因为我希望它们可用于应用程序的多个部分。
把它们放在App.xaml :)
在每个WPF应用程序中都有一个
App.xaml(及其相应的代码
file,App.xaml.cs或App.xaml.vb)
作为全局文件
申请范围广泛的声明。您可以
使用此文件声明一个常量
整个应用程序的外观和感觉。
例如,您可以声明默认值
所有按钮的红色背景
应用。
http://www.microsoft.com/emea/msdn/thepanel/en/articles/introduction_wpf.aspx
把它们放在App.xaml :)
在每个WPF应用程序中都有一个
App.xaml(及其相应的代码
file,App.xaml.cs或App.xaml.vb)
作为全局文件
申请范围广泛的声明。您可以
使用此文件声明一个常量
整个应用程序的外观和感觉。
例如,您可以声明默认值
所有按钮的红色背景
应用。
http://www.microsoft.com/emea/msdn/thepanel/en/articles/introduction_wpf.aspx
请查看“静态资源查找行为”一节 这里。应用程序资源字典中的任何内容(即 Application.Resources
)全球可用。每当您使用给定密钥查找资源,并且密钥未在本地资源字典的层次结构中的任何位置使用时,将返回应用程序字典中的密钥。
要在XAML中填充应用程序的资源字典,请找到应用程序的XAML文件(通常是App.xaml)并添加 Application.Resources
元件。
您可以创建全局资源的字典,并在app.xaml中包含其路径
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/YourProject;Component/YourXamlFile.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
现在,YourXamlFile.xaml中的所有资源都将在项目中全局显示。
只是在这里加2美分。
我也想使用全局资源,但我使用自定义的Application类,所以我不能把它放在App.xaml中。
我在我的根位置创建了一个Resources.xaml,然后执行了以下操作:
Application.Current.Resources.MergedDictionaries.Add(new ResourceDictionary() { Source = new Uri("/MyWpfClient;component/Resources.xaml", UriKind.Relative) });
但是请注意,Resource.xaml必须将Build Action设置为'Page'。如果没有,它找不到我用作转换器的某些类型。