سؤال

أواجه مشاكل في فهم عندما يتم استدعاء طريقة أونريندر.النظر في بلدي على سبيل المثال:لدي فئة سوميليمنت المستمدة من فراموركليمنت الذي يتجاوز طريقة أونريندر.لنفترض أن لدي Grid grid.ما أتوقعه هو ذلك

var someElement = new SomeElement();
grid.AddVisualChild(someElement);
someElement.InvalidateVisual();

من شأنه أن يسبب سوميليمنت.طريقة أونريندر ليتم تشغيلها.لا يحدث ذلك في حالتي ، ولكن ما يلي يفعل:

var someElement = new SomeElement();
grid.Children.Add(new SomeElement());
someElement.InvalidateVisual();

لذا سؤالي هو لماذا someElement لا يتم رسمها عند إضافتها فقط إلى الشجرة المرئية.ما هي أهمية إضافته إلى العقار Children?وبشكل أعم, ما كيف يتم استدعاء أونريندر?عبر الشجرة المرئية ، أو Children خاصية, أو?

هل كانت مفيدة؟

المحلول

أدفيسوالشيلد لا تفعل ما قد يكون التفكير هو يفعل.

أدفيسوالشيلد هو فقط هناك لإنشاء علاقة الطفل الوالد بين اثنين من صور في فيسوالتري.لا شيء أكثر أو أقل.فيسوالتري لا يجعل كل ما هو داخله.

أدلوجيكالشيلد يفعل الشيء نفسه فقط أنه يخلق لوجيكتري.عادة ما تكون الشجرة المنطقية أصغر وأقصر من الشجرة المرئية ، مما يعني أنها أسرع.

من أجل تقديم الدعم الكامل لأطفالك ، تحتاج إلى استدعاء طريقة القياس عليها وترتيب الطريقة.وعلاوة على ذلك ، تحتاج إلى تغيير الخاصية فيسوالشيلدرنكونت من والديك وتمرير الحجم الصحيح لكل طفل وتحتاج إلى وضعها على الموقف المناسب للمستخدم لتكون قادرة على رؤيتها.ثم سيتم تقديم الأشياء.

استدعاء أدفيسوالشيلد وحده و إنفاليداتيفيسوال لا تفعل أي شيء.

جمع الأطفال ، من ناحية أخرى ، هو إيليمنتكولكتيون أن يفعل كل الأشياء المذكورة أعلاه ذكرت تلقائيا.هذا هو السبب في أنه يعمل مع الأطفال.إضافة (...).

علاوة على ذلك ، يجب أن تعمل دائما مع مجموعة الأطفال بدلا من كتابة الأشياء الخاصة بك.

مثل هايكور ذكر العديد من المشاكل يمكن حلها ببساطة عن طريق وجود مففم السليم.

ربما لا تحتاج إلى عنصر تحكم مخصص.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top