مشاكل التصميم مع .Net UserControl
-
08-06-2019 - |
سؤال
لقد قمت بإنشاء UserControl الذي يحتوي على ملف ListView
فيه.يمكن الوصول إلى ListView بشكل عام من خلال خاصية.عندما أضع UserControl في نموذج وأحاول تصميم ملف ListView
على الرغم من الممتلكات، و ListView
يبقى على هذا النحو حتى أقوم بالتجميع مرة أخرى ويعود إلى الحالة الافتراضية.
كيف يمكنني جعل تغييرات التصميم الخاصة بي تلتزم بـ ListView
?
المحلول
تحتاج إلى تزيين خاصية ListView باستخدام سمة DesignerSerializationVisibility، كما يلي:
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
public ListView MyListView { get { return this.listView1; } }
هذا يخبر منشئ الكود الخاص بالمصمم بإخراج الكود الخاص به.
نصائح أخرى
فريدريك هذا صحيح، بشكل أساسي، عندما تحتاج إلى تمكين المصمم من الاحتفاظ بالخاصية إلى الصفحة حتى يمكن إنشاء مثيل لها في وقت التشغيل.هناك طريقة واحدة فقط للقيام بذلك، وهي كتابة قيمها إلى صفحة ASPX، والتي يتم التقاطها بعد ذلك في وقت التشغيل.
وبخلاف ذلك، سيعود عنصر التحكم ببساطة إلى حالته الافتراضية في كل مرة.
ضع في اعتبارك دائمًا أن الصفحة (ومحتوياتها) والكود منفصلان تمامًا في ASP.NET، ويتم توصيلهما في وقت التشغيل.هذا يعني أنك لا تحصل على دعم المصمم الجميل كما تفعل في تطبيق WinForms (حيث يكون النموذج مثيلًا لكائن).
فقط لأكون واضحًا، لقد فعلت شيئًا كهذا، أليس كذلك؟
public ListView MyListView { get { return this.listView1; } }
إذن فأنت تقوم بالوصول (في وقت التصميم) إلى خاصية MyListView في UserControl الخاص بك؟
أعتقد أنه إذا كنت تريد دعمًا مناسبًا في وقت التصميم، فمن الأفضل لك تغيير خاصية "المعدل" في ListView نفسها (مرة أخرى في UserControl الأصلي) إلى Public - وبهذه الطريقة يمكنك تعديل ListView مباشرةً على مثيلات UserControl.لقد نجحت في القيام بذلك على أي حال.