سؤال

لدي تطبيق WinForms موجود وأقوم الآن بتصميم أجزاء جديدة له في WPF.الأمور تسير بشكل جيد إلى حد معقول وقد واجهت أول حاجتي للحوار.

أرغب في إجراء الحوار في WPF.يبدو كما لو أنني سأحتاج إلى إجراء UserControl للمحتوى الفعلي ثم استضافة هذا المحتوى عبر نموذج WinForms باستخدام ElementHost (نظرًا لأن UserControl ليس لديه طريقة ShowDialog()).

وهنا سؤالي.كيف يعمل هذا؟أفضل ما يمكنني قوله هو أن WPF UserControl لا يحتوي حتى على خاصية DialogResult (وهو أمر منطقي نظرًا لأنه لا يحتوي على طريقة ShowDialog()) - يبدو لي أنني سأحتاج إلى عنصر تحكم في نافذة WPF - وأنا لا أفعل ذلك أعتقد أنه يمكنني استخدام ذلك في هذه الحالة.

تكافح مع التدفق الأساسي وإعداد الأشياء هنا.هل يستطيع أحد أن يسلط الضوء؟

هل هذا ممكن حتى؟

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

المحلول

ويمكنك فتح نافذة WPF من تطبيق WinForms عناصر.

ومجرد إنشاء إطار وندعو ShowDialog(). سوف CLR تحميل إطار برنامج الأغذية العالمي وفتح النافذة.

نصائح أخرى

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

يدعم WPF MessengerBoxes (على الرغم من أنه إصدار مختلف قليلاً عن WinForms)، ويمكنك تجميع شيء ما باستخدام WPF Windows (توسيعه عن طريق إضافة شيء مشابه لـ DialogResult).ومع ذلك، تشير عناصر تحكم WPF المتوفرة إلى أنهم يحاولون تغيير تفاعلات تجربة المستخدم لتقليل مربعات الحوار، خاصة تلك المشروطة.

ولجعل حياتك أسهل، سأقوم بإنشاء فئة فرعية من نموذج WinForms/ElementHost خصيصًا للتعامل مع استضافة محتوى WPF، واعتمادًا على مدى نظافة إعلانات "الاستخدام" التي تفضلها، مع تغليف التعداد الخاص بك الذي يشبه DialogResult حتى لا تفعل ذلك. يجب أن تتضمن مساحة الاسم System.Windows.Forms والتي يمكن أن تجعل كود WPF الخاص بك أكثر تعقيدًا.

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