Имам глобално 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 за отговор № 1Application.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;
}
2 за отговор № 2
Какво е
this.Resources
?
Това е ресурсният речник на контрола, чийто кодов код е написал.
От друга страна Application.Current.Resources
е ресурсният речник на самия обект на приложението.
Ако пишете код вътре App.xaml.cs
, тогава Resources
и Application.Current.Resources
ще се отнасят до един и същ обект.