我在ResourceDictionary
文件中定义了全局App.xaml
。
<Application.Resources>
<ResourceDictionary>
<Style x:Key="yolo" TargetType="Grid" />
</ResourceDictionary>
</Application.Resources>
我已经在随机Page
中设置了断点并检查了调试器中的差异:
Application.Current.Resources = 1
Resources = 0
什么是this.Resources
?
答案 0 :(得分:2)
什么是
this.Resources
?
这是我们正在编写代码隐藏代码的控件的资源字典。
另一方面,Application.Current.Resources
是应用程序对象本身的资源字典。
如果您在App.xaml.cs
内编写代码,则Resources
和Application.Current.Resources
将引用相同的对象。
答案 1 :(得分:2)
<强> Application.Current.Resources
强>
包含App.xaml
文件中声明的资源,可以在整个应用程序中看到。
<强> this.Resources
强>
包含为任何控件本地定义的资源,例如Window
,UserControl
,并且仅在此控件中可用。
Window
的示例:
XAML
<Window ...
xmlns:sys="clr-namespace:System;assembly=mscorlib"
<Window.Resources>
<sys:String x:Key="MyString">TestString</sys:String>
</Window.Resources>
Code-behind
public MainWindow()
{
InitializeComponent();
string test = this.Resources["MyString"] as string;
}