09-07-14, 02:27 AM
(آخر تعديل لهذه المشاركة : 19-01-17, 09:32 AM {2} بواسطة الشاكي لله.)
DynamicResource Vs StaticResource
الفرق بين المعامل DynamicResource و StaticResource يظهر في وقت الRuntime عند التعامل برمجيا مع الCode-behind .
مثال :-
دعنا نُعًرف هذا الكود في منطقة الResource :
PHP كود :
<Window.Resources>
<SolidColorBrush x:Key="myColor" Color="Red" />
</Window.Resources
منطقة الResource كما ترون ليست مخصصة لوضع الStyle فقط ، بل يمكنك وضع اي كود Xaml تريده
الكود السابق هو يٌعرف Brush وهو يعني "لون"
الان لنفرض انه لدينا الWindow التالية :-
الLabel الذي باسم "فيجوال بيسك العرب" مربوط بالBrush الموجود في الResource
لاحظ المعامل المستعمل هو DynamicResource :
الان لو دخلنا على برمجة الزر ، وكتبنا التالي :-
PHP كود :
private void Button_Click_1(object sender, RoutedEventArgs e)
{
this.Resources["myColor"] = new SolidColorBrush(Colors.Green);
}
عند الضغط على الزر سيتم تغيير لون الLabel الى الاخضر
اما عند استخدام الStaticResource فلن يحصل شيئ وسيقى الLabel على اللون الاحمر .
السبب في ذلك ان StaticResource لاتفحص الCode-behind لمعرفة هل تم تغيير قيمة الResource او لا .
اما الDynamicResouce فلديها آليات تتبع من خلالها تستطيع ان تعرف هل تم تغيير قيمة الResource او لا ، فإذا تم هنالك تغيير سيتغير الLabel ايضا.
اذن في الحالات التي تتطلب تغيير الResource برمجيا نستخدم الDynamicResource
اما في الحالات الي تكون فيها غير محتاج لتغيير الResource طوال فترة عمل البرنامج نستخدم Static
فكلمة Static تعني "ثابت"
وكلمة Dynamic تعني "قابل للتغيير" (ديناميكي)
اضن وضحت الفكرة .
انتهى

