/ / Каква е разликата между Application.Current.Resources и ресурси - c #, wpf, ресурси

Каква е разликата между Application.Current.Resources и ресурси - c #, wpf, ресурси

Имам глобално 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 за отговор № 1

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

2 за отговор № 2

Какво е this.Resources?

Това е ресурсният речник на контрола, чийто кодов код е написал.

От друга страна Application.Current.Resources е ресурсният речник на самия обект на приложението.

Ако пишете код вътре App.xaml.cs, тогава Resources и Application.Current.Resources ще се отнасят до един и същ обект.