السيناريوهات المدعمة في WPF و التشغيل التفاعلي Windows Forms

WPF وWindows Forms يقدمان هيكلين مختلفين لإنشاء واجهات التطبيق. مساحة الاسم System.Windows.Forms.Integration توفر الفئات التي تمكن سيناريوهات العمليات الداخلية الشائعة . فئتي المفتاح اللذان يقوما بتطبيق قدرات العمليات الداخلية هما WindowsFormsHost و ElementHost. يصف هذا الموضوع أي سيناريوهات للعمليات الداخلية قد تم دعمه و أيهم لم يتم دعمه.

ملاحظةملاحظة

يتم إعطاء الاعتبارات الخاصة لـلسيناريو الخاص بــ عنصر التحكم المختلط.عنصر التحكم المختلط يحتوي على عنصر التحكم من تقنية واحدة متداخلة في عنصر تحكم من تقنية أخرى.وتسمى أيضاً العملية الداخلية المتداخلة . عنصر التحكم المختلط المتعدد المستويات لديه أكثر من مستوى لتداخل عنصر التحكم المختلط.مثال العمليات الداخلية المتداخلة متعددة المستويات هو Windows Forms عنصر التحكم الذي يحتوي على WPF عنصر التحكم ، الذي يحتوي على عنصر تحكم Windows Forms آخر.لا يتم دعم عناصر التحكم المختلطة متعددة المستويات.

يشتمل هذا الموضوع على الأقسام التالية.

  • تطبيق مبني على Windows Presentation Foundation يستضيف عناصر تحكم النماذج Windows
  • تطبيق مبني على نماذج Windows يستضيف عناصر تحكم Windows Presentation Foundation
  • موضوعات ذات صلة

تطبيق مبني على Windows Presentation Foundation يستضيف عناصر تحكم النماذج Windows

يتم دعم سيناريوهات العمليات الداخلية التالية عند استضافة عنصر تحكم WPF لعنصر تحكم Windows Forms :

  • WPF قد يقوم عنصر التحكم باستضافة واحد أو أكثر من Windows Forms عناصر التحكم باستخدام XAML.

  • قد يستضيف واحد أو أكثر من Windows Forms عناصر التحكم باستخدام التعليمات البرمجية.

  • أنه قد يستضيف Windows Forms حاوية عناصر التحكم التي تحتوي على آخرين من Windows Forms عناصر التحكم.

  • أنه قد يقوم باستضافة نموذج رئيسي/تفصيلي بــ WPF الرئيسي و تفاصيل Windows Forms.

  • أنه قد يقوم باستضافة نموذج رئيسي/تفصيلي بــ Windows Forms الرئيسي و تفاصيل WPF.

  • قد يستضيف واحد أو أكثر من عناصر التحكم ActiveX .

  • قد يستضيف واحد أو أكثر من عناصر التحكم المركبة .

  • أنه قد يقوم باستضافة عناصر التحكم المختلطة باستخدام Extensible Application Markup Language (XAML).

  • أنه قد يقوم باستضافة عناصر التحكم المختلطة باستخدام التعليمات البرمجية .

دعم التخطيط

توضح القائمة التالية القيود المعروفة عندما يحاول عنصر WindowsFormsHost تكامل عنصر تحكم Windows Forms المضيف له إلى نظام تخطيط WPF.

  • في بعض الحالات، عناصر تحكم Windows Forms لا يمكن تغيير حجمها أو يمكن تغيير الحجم فقط إلي أبعاد محددة. على سبيل المثال، عنصر تحكم Windows Forms ComboBox يدعم فقط ارتفاع واحد، والذي تم تعريفه بواسطة حجم الخط لعنصر التحكم. في تخطيط WPF الحيوي الذي يفترض مد العناصر عمودياً ، عنصر تحكم ComboBox المضاف لن يتمدد كما هو متوقع.

  • عناصر تحكم Windows Forms لا يمكن تدويرها أو انحرافها. على سبيل المثال، عندما تقوم بتدوير واجهة المستخدم الخاصة بك صواب بمقدار 90 درجة ، عناصر التحكم Windows Forms المستضافة ستحتفظ الموضع المستقيم الخاص بهم.

  • في معظم الحالات، عناصر تحكم Windows Forms لا تدعم تغيير الحجم المتناسب. على الرغم من أن الأبعاد الكلية لعنصر التحكم سوف يتغير حجمها, عناصر التحكم التابعة و عناصر المكون لعنصر التحكم قد لا يتغير حجمهم كما هو متوقع. يعتمد هذا القيد على كيفية جودة كل عنصر تحكم Windows Formsفي دعم المقياس.

  • في واجهة مستخدم WPF، يمكنك تغيير الترتيب التصاعدي للعناصر للتحكم في تراكب السلوك. يتم رسم عنصر تحكم Windows Forms المستضاف في HWND منفصلة بحيث يتم دوماً رسمها في أعلى عناصر WPF.

  • عناصر تحكم Windows Forms تدعم تغيير الحجم التلقائي استناداً إلى حجم الخط. في واجهة مستخدم WPF, تغيير حجم الخط لا يغير حجم التخطيط بأكمله على الرغم من أن العناصر الفردية قد تغير حجمها بشكل حيوي.

خصائص Ambient :

بعض خصائص ambient الخاصة بـعناصر تحكم WPF لها معادلات Windows Forms . تم نشر هذه الخصائص ambient في عناصر التحكم Windows Forms المستضافة و كشفها كخصائص عامة على عنصر التحكم WindowsFormsHost . عنصر التحكم WindowsFormsHost يترجم كل WPF خاصية ambient في Windows Forms المكافئ له.

لمزيد من المعلومات، راجع تعيين خاصية WPF و Windows Forms.

السلوك

يصف الجدول التالي سلوك العملية الداخلية.

السلوك

معتمد

غير مدعم

شفافية

تقديم عنصر التحكم Windows Forms يدعم الشفافية. الخلفية لأصل عنصر التحكم WPF يمكن أن يصبح خلفية عناصر تحكم Windows Forms المستضافة .

بعض عناصر تحكم Windows Forms لا تدعم الشفافية. على سبيل المثال، عناصر التحكم TextBox و ComboBox لن تكون عناصر تحكم شفافة عندما تتم استضافتها من قبل WPF.

tabbing التبويب

ترتيب علامة التبويب لعناصر التحكم Windows Forms المستضافة هي نفسها عند استضافة عناصر التحكم هذه في التطبيق المبني على Windows Forms .

التبويب من عنصر التحكم WPF إلى عنصر التحكم Windows Forms عن طريق المفتاح TAB و مفاتيح SHIFT + TAB تعمل كالمعتاد.

عناصر التحكم Windows Forms التي تحتوي على قيمة الخاصية TabStop لــfalse لا تتلقي التركيز عند تبويب المستخدم خلال عناصر التحكم.

  • كل عنصر تحكم WindowsFormsHost يحتوي على قيمة TabIndex الذي يتحدد متى تلقى عنصر تحكم WindowsFormsHost التركيز.

  • عناصر تحكم Windows Forms الموجودة داخل حاوية WindowsFormsHost تتبع الترتيب المحدد بواسطة الخاصية TabIndex. التبويب من فهرس علامات الجدولة الأخير تضع التركيز على عنصر تحكم WPF التالي ، إذا وجدت واحدة . إذا لم يكن هناك عنصر تحكم WPF آخر تحت التركيز ، التبويب تقوم بإرجاع عنصر التحكم Windows Forms الأول في ترتيب التبويب.

  • قيم TabIndex لعناصر التحكم داخلWindowsFormsHost نسبية لمشابهة عناصر التحكمWindows Forms المحتوي عليها بواسطة عنصر التحكم WindowsFormsHost .

  • السلوك المحدد بامتلاك التبويب لعنصر التحكم . على سبيل المثال، يؤدي ضغط المفتاح TAB في عنصر التحكم TextBox التي تحتوي على قيمة الخاصية AcceptsTab من true إلى إدخال علامة تبويب في مربع النص بدلاً من نقل التركيز.

غير متوفر.

التنقل بمفاتيح الأسهم

  • التنقل بين مفاتيح الأسهم في عنصر التحكم WindowsFormsHost هو نفسه كما في عنصر تحكم الحاوية Windows Forms العادية : مفاتيح "سهم الأعلى" و "سهم لليسار تحدد عنصر التحكم السابق و مفاتيح" سهم لأسفل وسهم لليمين تحدد عنصر التحكم التالي.

  • مفاتيح "سهم لأعلى" و "سهم لليسار من عنصر التحكم الأول المضمن في عنصر التحكم WindowsFormsHost تقوم بتنفيذ نفس الإجراء مثل اختصار لوحة المفاتيح SHIFT + TAB . إذا كان هناك عنصر التحكم WPF قابل للتركيز , ينتقل التركيز خارج عنصر التحكم WindowsFormsHost . يختلف هذا عن سلوك ContainerControl القياسي في عدم حدوث الالتفاف لآخر عنصر تحكم. إذا لم يكن هناك عنصر تحكم WPF آخر تحت التركيز ، التركيز يقوم بإرجاع عنصر التحكم Windows Forms الأخير في ترتيب التبويب.

  • "سهم لأسفل" و "سهم لليمين من آخر عنصر تحكم موجود في عنصر التحكم WindowsFormsHost يقوم بتنفيذ نفس الإجراء كـالمفتاح TAB. إذا كان هناك عنصر التحكم WPF قابل للتركيز , ينتقل التركيز خارج عنصر التحكم WindowsFormsHost . يختلف هذا عن سلوك ContainerControl القياسي في عدم حدوث الالتفاف لأول عنصر تحكم. إذا لم يكن هناك عنصر تحكم WPF آخر تحت التركيز ، التركيز يقوم بإرجاع عنصر التحكم Windows Forms الأول في ترتيب التبويب.

غير متوفر.

المسرّعات

مسرعات العمل كالمعتاد ، باستثناء أن يصرح في العمود "غير مدعم".

لا تعمل مسرعات مكررة عبر التقنيات مثل مسرعات مكررة عادية. عند تكرار تسريع عبر تقنيات ، بواحد على الأقل من عنصر تحكم Windows Forms والآخر على عنصر تحكم WPF ، Windows Forms يتلقى دائماً المسرع. لا يتم تبديل التركيز بين عناصر التحكم عند الضغط على المسرع مكررة.

مفاتيح الاختصار

اختصارات المفاتيح تعمل كالمعتاد ، باستثناء أن يصرح في العمود "غير مدعم".

  • اختصارات المفاتيح Windows Forms التي تتم معالجتها في مرحلة ما قبل المعالجة دائماً تأخذ الأسبقية على مفاتيح الاختصارWPF . على سبيل المثال، إذا كان لديك عنصر تحكم ToolStrip بمفاتيح الاختصار CTRL + S معرفة ، وكان هناك أمر WPF مرتبط بـ CTRL + S ، معالج عنصر تحكم ToolStrip دائماً يتم استدعاءه أولاً، بغض النظر عن التركيز.

  • Windows Forms مفاتيح الاختصار التي يتم معالجتها من قبل حدث KeyDown تتم معالجتها أخيراً فيWPF. يمكنك منع هذا السلوك بواسطة تجاوز أسلوب IsInputKey الخاص بعنصر تحكم Windows Forms أو معالجة حدث PreviewKeyDown . قم بإرجاع true من أسلوب IsInputKey ، أو تعيين قيمة خاصية PreviewKeyDownEventArgs.IsInputKey إلى true في معالج الأحداث PreviewKeyDown الخاص بك.

AcceptsReturn AcceptsTab ، و السلوكيات المحددة لعنصر التحكم الأخرى

تعمل الخصائص التي تقوم بتغيير السلوك الافتراضي للوحة المفاتيح كالمعتاد ، مع افتراض إن عنصر التحكم Windows Forms يتجاوز الأسلوب IsInputKey لإرجاع true.

عناصر التحكم Windows Forms الذي يقوم بتغيير سلوك لوحة المفاتيح الافتراضي بمعالجة حدث KeyDown تتم معالجتهم أخيراً في عنصر التحكمWPF المضيف . لأنه يتم معالجة تلك عناصر التحكم في النهاية, فإنها يمكن أن تعطي سلوك غير متوقع .

الدخول و ترك الأحداث

عند عدم ذهاب التركيز إلى عنصر تحكم ElementHost الحاوي ، أحداث الدخول و الترك يتم تشغيلها كالمعتاد عند تغيير التركيز في عنصر تحكم WindowsFormsHost واحد.

أحداث الدخول و الترك لا يتم تشغيلها عند حدوث تغييرات التركيز التالية:

تعدد العمليات

كل أنواع العمليات المتعددة يتم دعمها .

تقنيات Windows Forms و WPF تفترض طراز التزامن من النوع الأحادي الترابط . أثناء تصحيح الأخطاء ، استدعاءات كائنات إطار عمل من مؤشرات الترابط الأخرى سوف تقوم بإصدار استثناء لفرض هذا المطلب.

الأمان

كل سيناريوهات العمليات الداخلية تتطلب ثقة كاملة.

لا توجد وحدات سيناريو العمليات الداخلية مسموح بها في بيئة عمل ذات ثقة جزئية.

‏إمكانية وصول ذوي الاحتياجات الخاصة

يتم دعم كافة سيناريوهات الوصول . منتجات التقنيات المساعدة تعمل بشكل صحيح عند استخدامهم للتطبيقات المختلطة التي تحتوي على كلا من عناصر تحكم Windows Forms و WPF .

غير متوفر.

الحافظة

تعمل كافة عمليات الحافظة كالمعتاد. يتضمن هذا القص واللصق بين عناصر تحكم Windows Forms و WPF .

غير متوفر.

ميزة السحب و الافلات

كافة عمليات السحب والإفلات تعمل كالمعتاد. يتضمن هذا العمليات بين عناصر تحكم Windows Forms و WPF .

غير متوفر.

تطبيق مبني على نماذج Windows يستضيف عناصر تحكم Windows Presentation Foundation

يتم دعم سيناريوهات العمليات الداخلية التالية عند استضافة عنصر تحكم Windows Forms لعنصر تحكم WPF :

  • يستضيف واحد أو أكثر من عنصر تحكم WPF باستخدام التعليمات البرمجية.

  • اقتران ورقة خصائص بواحدة أو أكثر من عناصر تحكم WPF المستضافة .

  • استضافة واحد أو أكثر من صفحات WPF في النموذج.

  • بدء تشغيل إطار WPF .

  • أنه قد يقوم باستضافة نموذج رئيسي/تفصيلي بــ Windows Forms الرئيسي و تفاصيل WPF.

  • أنه قد يقوم باستضافة نموذج رئيسي/تفصيلي بــ WPF الرئيسي و تفاصيل Windows Forms.

  • استضافة عناصر تحكم WPF مخصصة .

  • استضافة عناصر تحكم مختلطة .

خصائص Ambient :

بعض خصائص ambient الخاصة بـعناصر تحكم Windows Forms لها معادلات WPF . تم نشر هذه الخصائص ambient في عناصر التحكم WPF المستضافة و كشفها كخصائص عامة على عنصر التحكم ElementHost . عنصر التحكم ElementHost يترجم كل خاصية ambient Windows Forms في مكافيء WPF الخاص به .

لمزيد من المعلومات، راجع تعيين خاصية WPF و Windows Forms.

السلوك

يصف الجدول التالي سلوك العملية الداخلية.

السلوك

معتمد

غير مدعم

شفافية

تقديم عنصر التحكم WPF يدعم الشفافية. الخلفية لأصل عنصر التحكم Windows Forms يمكن أن يصبح خلفية عناصر تحكم WPF المستضافة .

غير متوفر.

تعدد العمليات

كل أنواع العمليات المتعددة يتم دعمها .

تقنيات Windows Forms و WPF تفترض طراز التزامن من النوع الأحادي الترابط . أثناء تصحيح الأخطاء ، استدعاءات كائنات إطار عمل من مؤشرات الترابط الأخرى سوف تقوم بإصدار استثناء لفرض هذا المطلب.

الأمان

كل سيناريوهات العمليات الداخلية تتطلب ثقة كاملة.

لا توجد وحدات سيناريو العمليات الداخلية مسموح بها في بيئة عمل ذات ثقة جزئية.

‏إمكانية وصول ذوي الاحتياجات الخاصة

يتم دعم كافة سيناريوهات الوصول . منتجات التقنيات المساعدة تعمل بشكل صحيح عند استخدامهم للتطبيقات المختلطة التي تحتوي على كلا من عناصر تحكم Windows Forms و WPF .

غير متوفر.

الحافظة

تعمل كافة عمليات الحافظة كالمعتاد. يتضمن هذا القص واللصق بين عناصر تحكم Windows Forms و WPF .

غير متوفر.

ميزة السحب و الافلات

كافة عمليات السحب والإفلات تعمل كالمعتاد. يتضمن هذا العمليات بين عناصر تحكم Windows Forms و WPF .

غير متوفر.

راجع أيضًا:

المرجع

ElementHost

WindowsFormsHost

المبادئ

الإرشادات التفصيلية: استضافة عنصر تحكم Windows Forms في WPF

الإرشادات التفصيلية: استضافة عنصر تحكم WPF في نماذج النوافذ

تعيين خاصية WPF و Windows Forms