Application.Current.Resources和Resources之间有什么区别

时间:2014-03-08 14:56:38

标签: c# wpf resources

我在ResourceDictionary文件中定义了全局App.xaml

<Application.Resources>
    <ResourceDictionary>
        <Style x:Key="yolo" TargetType="Grid" />
    </ResourceDictionary>
</Application.Resources>

我已经在随机Page中设置了断点并检查了调试器中的差异:

Application.Current.Resources = 1
Resources = 0

什么是this.Resources

2 个答案:

答案 0 :(得分:2)

  

什么是this.Resources

这是我们正在编写代码隐藏代码的控件的资源字典。

另一方面,Application.Current.Resources是应用程序对象本身的资源字典。

如果您在App.xaml.cs内编写代码,则ResourcesApplication.Current.Resources将引用相同的对象。

答案 1 :(得分:2)

<强> Application.Current.Resources

包含App.xaml文件中声明的资源,可以在整个应用程序中看到。

<强> this.Resources

包含为任何控件本地定义的资源,例如WindowUserControl,并且仅在此控件中可用。

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;
}