‫مرحبًا بعودتك.
‫في هذا الفيديو ، سنتحدث عن خصائص التبعية وهي مهمة للغاية بمجرد أن نصل
‫إلى ربط البيانات.
‫وعمومًا ، من المنطقي بالنسبة لك أن تفهم كيفية عملها.
‫لذلك دعونا نمضي قدمًا وننشئ زرًا داخل شبكتنا.
‫ونقوم بذلك ببساطة عن طريق إنشاء كلمة رئيسية للزر كما رأينا عدة مرات بالفعل.
‫وهنا سأقوم فقط بتعيين ارتفاع ، دعنا نقول ، 100 بكسل وعرض
‫200 بكسل ، ثم محتوى Click Me.
‫والآن أريد استخدام شيء يسمى الخلفية.
‫لذلك هناك خاصية تسمى الخلفية وأريد تعيينها لمياه الصرف الصحي بالتأكيد.
‫لذلك سيكون هذا هو الزر الخاص بي.
‫وكما ترون الآن ، لها لون منشار فقط.
‫ربما يجب أن نجعلها حمراء.
‫حسنًا ، أحمر.
‫إنه قوي جدًا.
‫أحمر بنفسجي.
‫يبدو ذلك جيدًا.
‫لذلك لون بسيط.
‫لذا فإن الفكرة وراء ذلك هي أنني أريد أن أمضي قدمًا وأشرح لك ماهية خصائص التبعية ، وأين توجد
‫، وكيفية إنشاء خصائص التبعية الخاصة بك.
‫ومن السهل جدًا القيام بذلك باستخدام زر ، دعنا نقول.
‫وبالمناسبة ، هذا الزر وسأغلقه بهذا الشكل لأنني أريد تصميم هذا الزر.
‫لذا ضمن علامات الأزرار ، أريد إضافة المزيد من الأنماط إلى هذا الزر ويجب أن يكون النمط هو المشغل.
‫لذلك أريد أن أطلق.
‫لذلك إذا دخلت في منطقة الأزرار ، فأنا أريد تغيير اللون أو شيء من هذا القبيل.
‫لذلك سأستخدم نمط زر نقطة.
‫يحتاج نمط الزر الآن إلى نمط هنا حتى أتمكن من إنشاء أسلوبنا الخاص هنا وسأحدد هدفًا لهذا
‫النمط.
‫سيكون نوع الهدف هو الزر.
‫الآن هذا ليس كافيًا لأن ما أريد فعله الآن هو إضافة محفز لهذا النمط.
‫لذلك سأستخدم مشغلات النمط.
‫مثل هذه.
‫والآن يمكنني المضي قدمًا وإنشاء مشغلات صغيرة جميلة سيتم إطلاقها بمجرد وقوع حدث ما.
‫وقد رأينا الأحداث بالفعل ، لكن هذا حدث مختلف قليلاً.
‫لذلك فهو مشغل يمكننا استخدامه على النحو التالي.
‫يمكننا إنشاء مشغل هنا وسيكون لهذا المشغل خاصية.
‫وهذا ، على سبيل المثال ، يتم تمرير الماوس فوقه.
‫لذلك بمجرد أن يكون الماوس فوق هذا الزر ، يجب تعيين القيمة على "صواب".
‫وفي هذا الزناد ، يجب أن يكون لدي محددات بعد ذلك.
‫إذن ماذا سيحدث إذا كان هذا هو الحال؟
‫لذا ما سأفعله هو أنني سأقوم بتعيين حجم خط الخاصية على القيمة 30 لأن حجم الخط الآن أصغر كثيرًا.
‫إذن لدينا هنا الزر الذي يحتوي على عرض محدد ومحتوى وعرض وكل هذه الأنواع من الأشياء.
‫وجعلتها طيارًا ولكن أحمر بنفسجي باهت.
‫ثم أضفت نمطًا إلى هذا الزر.
‫وهذا النمط الذي أضفته هو في الواقع محفز.
‫لذلك يمكنني أن يكون هناك شيء يسمى مشغلات النمط والتي ستؤدي إلى تغيير
‫النمط ، ويتم تشغيل المشغل بمجرد أن يكون الماوس فوق هذا الزر وسيؤدي ذلك إلى ضبط الأشياء.
‫إذن ما ستفعله هو أنها ستحدد حجم الخط على القيم التي حددناها هنا والآن.
‫هنا نقوم بتعيين القيمة.
‫تعني كلمة "صواب" أنه سيتم تشغيله بمجرد أن يكون مؤشر الماوس صحيحًا.
‫وهذا صحيح بمجرد تحريك الماوس فوق الزر ، أو بمجرد تحريك الماوس فوق الزر.
‫لذلك إذا قمنا بتشغيل ذلك ، يجب أن نرى بعض التغييرات.
‫وهذه طريقة طويلة إلى حد ما لمجرد الحصول على وظيفة تحوم ، لكنها أكثر بكثير مما نريد
‫استخدامه هنا.
‫كما ترى ، أحوم فوقها ويتغير اللون إلى هذا اللون المزرق.
‫ثم لدينا هذا النص الذي يبدو أكبر بعد ذلك.
‫لذلك تتغير القيمة إلى 30.
‫لذلك هذا رائع وكل شيء.
‫لكن لماذا نحتاج إلى هذا الرمز الطويل؟
‫حسنًا ، الشيء هو أننا نستخدم الخصائص هنا.
‫كما ترى ، يُطلق على هذا الشيء اسم الخاصية وفي الواقع العرض عبارة
‫عن خاصية ، والمحتوى عبارة عن خاصية ، والخلفية هي خاصية وتعتمد على خصائص التبعية
‫أو أنها متصلة بخصائص التبعية وهي مهمة لربط البيانات.
‫كما قلت ، ما سنقوم بتغطيته في الفيديو التالي أو أحد مقاطع الفيديو التالية
‫، لكن من المهم أيضًا أن يكون لديك حدث المشغل هذا أو أن الزر على علم بما يجري.
‫لذلك دعونا نمضي قدمًا وننشئ زرًا داخل طريقة النافذة الرئيسية.
‫سأقوم فقط بإنشاء زر وأريد الآن التحقق من الفصل نفسه.
‫لذا انتقل إلى التعريف بحيث يمكنك ببساطة الضغط على F 12 للوصول إلى التعريف.
‫وما سيفعله هذا هو أنه سيظهر لي فئة الأزرار.
‫وكما ترى ، إنها فئة ترث من الزر.
‫هناك خاصية تبعية ثابتة للقراءة فقط وهي خاصية افتراضية تم إلغاؤها ، الخاصية هي الخاصية
‫الافتراضية.
‫لذلك ليس كثيرا.
‫ولكن ما يمكنك رؤيته أيضًا هو أنه توجد بالفعل خاصية عادية هنا.
‫إذن فهذه خاصية فئة لدينا هنا والتي تسمى افتراضيًا تم إلغاؤها
‫وتعطيلها وترتبط بخصائص التبعية تلك.
‫لذلك فهي تمثل خاصية يمكن تعيينها من خلال طرق مثل بيانات التصميم والرسوم المتحركة
‫الملزمة والوراثة.
‫لذا فإن ربط البيانات ، كما قلت ، هو شيء سنقوم بتغطيته لاحقًا.
‫التصميم ، هذا جيد.
‫ما قمنا به للتو ، قمنا بتصميم الزر الخاص بنا ويمكننا استخدام الرسوم المتحركة والوراثة لذلك.
‫ولكن الآن دعونا نلقي نظرة أعمق على قاعدة الأزرار حتى نعرف أن هذا الزر يرث من قاعدة
‫الزر.
‫ثم يمكننا الانتقال إلى تعريف قاعدة الأزرار والتحقق منها.
‫حسنا.
‫إنها فئة التحكم في المحتوى.
‫لذا فإن قاعدة الزر ترث من التحكم في المحتوى ، والتي.
‫حسنًا ، تحتوي قاعدة الزر على حدث متجذر ، كما ترون هنا ، حدث نقرة.
‫وقد رأينا آخر مرة ، على الرغم من ذلك ، الحدث المضمن وله الكثير من خصائص
‫التبعية أيضًا ، مثل الضغط على وضع النقر وأمر الخاصية والهدف وما إلى ذلك.
‫لكننا لم نتطرق إلى بعض هؤلاء بعد.
‫ولكن ما هو أكثر إثارة للاهتمام ، إذا تعمقنا في التحكم في المحتوى ، يمكننا
‫أن نرى أن هناك خاصية تقول أن بها محتوى.
‫لذا فإن هذا الشخص يعتني بكامل محتوى الزر.
‫على سبيل المثال ، النص عبارة عن كتلة نصية داخل زرنا.
‫لذلك إذا كان لدينا محتوى داخل زرنا ، إذن.
‫يتم التعامل معها بواسطة هذه الفئة ، لذلك من خلال فئة التحكم في المحتوى هذه.
‫وفي الواقع ، يمكننا التعمق أكثر ، والذهاب إلى التعريف ، وهنا سنجد الكثير من خصائص
‫التبعية وحدثين جذريين.
‫وفئة التحكم هذه لها خصائص تبعية تسمى خاصية الحشو من فرشاة الحدود.
‫لذا فإن لون الحد ثم محاذاة محتوى عمودي ، محاذاة محتوى أفقي.
‫والآن هذا مثير للاهتمام بالنسبة لنا لأننا استخدمناه.
‫إنها خاصية خلفية وهي بالضبط تلك التي قمنا بتعيينها في ملف XAML الخاص بنا.
‫كما ترون هنا ، قمنا بتعيين الخلفية إلى Pale Violet Red حتى نتمكن من الوصول إلى خصائص التبعية هذه
‫عبر ممتلكاتنا هنا.
‫هذه هي خصائصنا مثل حجم الخط والخط وخلفية العائلة والمقدمة وكل تلك الأنواع من الأشياء
‫التي نستخدمها عندما نعمل مع عناصر التحكم.
‫والزر ، على سبيل المثال ، هو عنصر تحكم أو كتلة نصية هي أيضًا عنصر تحكم.
‫لذا فإنهم جميعًا يرثون من فئة التحكم هذه ولديهم جميعًا خصائص التبعية التي تعمل بعد ذلك
‫على إطلاق التغييرات بشكل جيد والإبلاغ عنها.
‫لذلك نرى هنا أيضًا أن هناك شيئًا مهمًا بشأن خصائص التبعية وهو أنها دائمًا ثابتة
‫ويتم قراءتها فقط.
‫لذلك هذا مهم جدا.
‫ما يمكنك رؤيته أيضًا هو أنها تنتهي دائمًا باسم الخاصية.
‫لذلك عندما نحدد خاصية التبعية ، نقول background ، وهو نفس اسم الخاصية
‫نفسها.
‫إذن هنا على سبيل المثال ، أين هي خلفيتهم ، ولكن أيضًا مصطلح الملكية في النهاية.
‫قصة طويلة جدًا ونحن نتعمق كثيرًا ، لكن هذا سيوضح لك أكثر قليلاً ما هي خصائص التبعية هذه
‫وما الذي نعمل معه طوال الوقت.
‫لذلك نحن نتلاعب بالخصائص ، لكنهم في الواقع يتعاملون مع خصائص التبعية.
‫لماذا نحتاج كل هذا؟
‫حسنًا ، فقط لفهم ما يحدث هنا مع هذا المشغل ، يستخدم WPF خاصية التبعية هنا.
‫على سبيل المثال ، يتم تمرير الماوس فوقه ويوفر إشعارًا متسلسلًا إلى WPF بمساعدة
‫خصائص التبعية والذي يسمح لنا بتعيين القيمة على "true".
‫ثم أيضًا إذا قمت بفحصها ، لأن هذا شيء لم أتطرق إليه بعد.
‫في الواقع كانت هناك أخطاء في البناء ، لذلك نحن بحاجة للتخلص من هذا الزر هنا.
‫لكن ما لم أغطيه أو أتطرق إليه بعد ، وهو أمر مهم للغاية ، هو ما يلي.
‫لذلك يمكنك أن ترى أن لدينا هذا المشغل وهو يقول أن الخاصية هي الماوس فوق القيمة.
‫حقيقي.
‫وسوف يتم تشغيله بمجرد أن يكون هذا الماوس صحيحًا ، فماذا ستفعل؟
‫حسنًا ، سيتم تعيين خصائص مثل حجم الخط على 30.
‫واسمحوا لي أن أريك مرة أخرى.
‫انظر ، انظر.
‫لكن الآن إذا تركت الزر ، يمكنك أن ترى ، مهلاً ، إنه يتغير مرة أخرى ويتم ذلك من خلال خصائص التبعية
‫هذه.
‫لذلك فهي تقوم بالإبلاغ عما يجري والبيع ، مع إعادة قيمة حجم الخط إلى قيمته
‫الأصلية.
‫لذا كما ترون ، هذا صحيح فقط عندما ينتهي الماوس وهذا ممكن من خلال خصائص التبعية.
‫الآن شيء آخر حول خصائص التبعية ، لأنني قلت إنها يجب أن تكون دائمًا ثابتة وقراءة
‫فقط ، وذلك لأنه يجب مشاركة جميع عناصر التحكم وإتاحتها.
‫لذلك لا تريد أن يكون عنصر التحكم متاحًا مرة واحدة فقط.
‫تريد أيضًا أن يكون متاحًا للفئات الأخرى ووجهات النظر الأخرى وما إلى ذلك.
‫وهو ثابت لأنه لا يجب تغيير القيمة بعد التهيئة.
‫وهذا الإخطار المتسلسل بأن خصائص التبعية مطلوبة لاستخراج البيانات ، وللحركة ، وللمشغلات
‫كما رأينا هنا ، وللتصميم وما إلى ذلك.
‫الآن إذا كنت تريد المضي قدمًا وإنشاء خاصية التبعية الخاصة بك ، فيمكنك القيام بذلك بالطريقة التالية.
‫لذلك سأقوم بإنشاء خاصية جديدة في هذا الفصل هنا.
‫سأسميها في الواقع.
‫دعونا نضعها في المقدمة.
‫سأسميها عامة في ممتلكاتي.
‫وكما قلت ، هذه خاصية c LR وهنا سأحتاج إلى الحصول على مجموعة ، لكن هذا لن يكون كافيًا.
‫سأقوم بتعديلها في ثانية.
‫لنقم بإنشاء خاصية تبعية لهذا العقار الخاص بي.
‫لذلك سأقوم بإنشاء خاصية تبعية
‫عامة ثابتة للقراءة فقط تسمى خاصية التبعية الخاصة بي ، وخاصية التبعية والتي يجب تهيئتها على الفور باستخدام
‫خاصية التبعية dot register.
‫لذلك نحن نسجل خاصية تبعية جديدة ونحتاج إلى تخصيص أشياء متعددة.
‫على سبيل المثال ، نحتاج إلى اسم سلسلة وسأسميها فقط.
‫ممتلكاتي ، ثم نحتاج إلى نوع الملكية.
‫إذن من أي نوع يجب أن تكون هذه الخاصية؟
‫وكما رأينا هنا ، فإن الممتلكات التي أملكها هي من النوع int.
‫لذا سأستخدم نوعًا من نوع int.
‫بعد ذلك نحتاج إلى كتابة مالك العقار.
‫لذا فإن مالك النوع ومالك هذا النوع من الممتلكات الخاصة بي هو صنف النافذة الرئيسية الخاصة بي لأنه
‫جيدًا في فئة لا رئيسية.
‫لذلك نقول ببساطة أن النوع من سيكون النافذة الرئيسية والآن نحتاج أيضًا إلى تسليم البيانات الوصفية للخاصية.
‫لذلك سأقوم بإنشاء بيانات وصفية جديدة للخاصية والتي ستكون صفرًا.
‫لذا سأدخل الصفر هنا ، لا شيء رائع هناك وهذا كل شيء.
‫هذه هي الطريقة التي يمكننا من خلالها إنشاء خاصية تبعية.
‫والآن يجب أن تتأثر ممتلكاتي أيضًا بخاصية التبعية هذه بالطبع.
‫ولكي أفعل ذلك ، أحتاج إلى المضي قدمًا وتعديل عملية الحصول عليها وتعيينها ، لذا يجب أن تعيد getter
‫خاصية التبعية الخاصة بي للحصول على قيمة.
‫ولكن لدينا الآن هذه المشكلة ، وهي أن قيمة خاصية التبعية هي من نوع خاصية التبعية ،
‫وعلى الرغم من أننا حددنا أنها من النوع int ، ما زلنا بحاجة إلى جعلها موجودة فيها.
‫لذا سأضعها في عدد صحيح ، والآن يمكننا المضي قدمًا وإغلاق هذا المحضر بالفعل ، وإغلاق العبارة
‫، وقول أفضل ، والآن يجب تعيين قيمة المُحدد.
‫وهنا قمت بتعيين خاصية التبعية الخاصة بي على القيمة المعطاة.
‫هذا ما نفعله هنا وهذا هو كيف يمكنك إنشاء خاصية التبعية الخاصة بك.
‫لذلك هذا هو المهم قراءة ثابتة فقط.
‫تحتاج إلى إنشائه كنوع خاصية تبعية.
‫يمكنك إعطائها اسمًا ، ثم تحتاج إلى تسجيلها وتحتاج إلى إعطائها اسمًا ونوعًا ومكان وجود
‫المالك أو ما هو المالك.
‫لذا ، فإن الفئة التي يتم فيها إنشاء الخاصية ثم تحتاج إلى تسليم بعض البيانات الوصفية للخاصية حتى تتمكن
‫من إضافة بعض البيانات الوصفية الإضافية للخاصية.
‫كما ترى ، هناك أربعة حمولات زائدة مختلفة ويمكنك تسليم كائن وهو القيمة الافتراضية.
‫وأنا أقول فقط ، حسنًا ، القيمة الافتراضية صفر.
‫لذا فإن الخاصية الخاصة بي ستتحول إلى الصفر افتراضيًا بسبب البيانات الوصفية لخاصيتي التي أعددتها هنا.
‫حسنا.
‫الكثير من الاشياء هنا
‫واعتمادًا على ما ستقوم بتطويره ، قد لا تنشئ أبدًا خصائص التبعية الخاصة بك.
‫لذلك لا داعي للقلق إذا احتجت في وقت ما إلى استخدام خصائص التبعية ، فما عليك سوى التحقق من كيفية إنشاء خصائصك
‫الخاصة.
‫بخلاف ذلك ، يمكنك ببساطة استخدام الخصائص التي كانت لدينا هنا ولمستخدم نهائي ، أو لنقل للمطور
‫الذي قام ببناء واجهة المستخدم فقط ولن يكون ذلك مناسبًا.
‫لكني أريد فقط أن أوضح لكم كيف تتشكل الأشياء وما هو مهم هنا.
‫حسنا.
‫لذلك نراكم في الفيديو التالي.