Sdílet prostřednictvím


Vzájemná spolupráce subsystémů WPF a Windows Forms

WPF a model Windows Forms představují dvě různé architektury pro vytváření aplikačních rozhraní. Obor System.Windows.Forms.Integration názvů poskytuje třídy, které umožňují běžné scénáře spolupráce. Dvě klíčové třídy, které implementují interoperační schopnosti jsou WindowsFormsHost a ElementHost. Toto téma popisuje, které scénáře spolupráce se podporují a které scénáře se nepodporují.

Poznámka:

Ke scénáři hybridního řízení se přiděluje zvláštní pozornost. Hybridní ovládací prvek má ovládací prvek z jedné technologie vnořené do ovládacího prvku z druhé technologie. To se také označuje jako vnořená spolupráce. Víceúrovňový hybridní ovládací prvek má více než jednu úroveň vnoření hybridního řízení. Příkladem víceúrovňové vnořené spolupráce je model Windows Forms ovládací prvek, který obsahuje ovládací prvek WPF, který obsahuje další model Windows Forms ovládací prvek. Víceúrovňové hybridní ovládací prvky nejsou podporovány.

Hostování ovládacích prvků model Windows Forms ve WPF

Pokud ovládací prvek WPF hostuje ovládací prvek model Windows Forms, podporují se následující scénáře spolupráce:

  • Ovládací prvek WPF může hostovat jeden nebo více ovládacích prvků model Windows Forms pomocí XAML.

  • Může hostovat jeden nebo více ovládacích prvků model Windows Forms pomocí kódu.

  • Může hostovat model Windows Forms ovládací prvky kontejneru, které obsahují další ovládací prvky model Windows Forms.

  • Může hostovat hlavní/podrobný formulář s hlavním serverem WPF a model Windows Forms podrobností.

  • Může hostovat hlavní/podrobný formulář s podrobnostmi model Windows Forms hlavního serveru a WPF.

  • Může hostovat jeden nebo více ovládacích prvků technologie ActiveX.

  • Může hostovat jeden nebo více složených ovládacích prvků.

  • Může hostovat hybridní ovládací prvky pomocí jazyka XAML (Extensible Application Markup Language).

  • Může hostovat hybridní ovládací prvky pomocí kódu.

Podpora rozložení

Následující seznam popisuje známá omezení, když WindowsFormsHost se prvek pokusí integrovat hostovaný model Windows Forms ovládací prvek do systému rozložení WPF.

  • V některých případech nelze změnit velikost ovládacích prvků model Windows Forms nebo může mít velikost pouze pro konkrétní rozměry. Například ovládací prvek model Windows Forms ComboBox podporuje pouze jednu výšku, která je definována velikostí písma ovládacího prvku. V dynamickém rozložení WPF, které předpokládá, že prvky mohou roztáhnout svisle, hostovaný ComboBox ovládací prvek nebude roztažen podle očekávání.

  • model Windows Forms ovládací prvky nelze otočit ani zkosit. Když například otočíte uživatelské rozhraní o 90 stupňů, hostované model Windows Forms ovládací prvky budou udržovat jejich vzpřímenou pozici.

  • Ve většině případů ovládací prvky model Windows Forms nepodporují proporcionální škálování. I když se celkové rozměry ovládacího prvku budou škálovat, podřízené ovládací prvky a prvky komponent ovládacího prvku nemusí měnit velikost podle očekávání. Toto omezení závisí na tom, jak dobře každý ovládací prvek model Windows Forms podporuje škálování.

  • V uživatelském rozhraní WPF můžete změnit pořadí vykreslování prvků a řídit překrývající se chování. Hostovaný model Windows Forms ovládací prvek je nakreslen v samostatném HWND, takže je vždy nakreslený nad prvky WPF.

  • model Windows Forms ovládací prvky podporují automatické škálování na základě velikosti písma. V uživatelském rozhraní WPF změna velikosti písma nezmění velikost celého rozložení, i když se jednotlivé prvky můžou dynamicky měnit.

Okolí – vlastnosti

Některé okolní vlastnosti ovládacích prvků WPF mají model Windows Forms ekvivalenty. Tyto okolní vlastnosti se rozšíří do hostovaných model Windows Forms ovládacích prvků a zobrazí se jako veřejné vlastnosti WindowsFormsHost ovládacího prvku. Ovládací WindowsFormsHost prvek přeloží každou vlastnost okolí WPF na jeho model Windows Forms ekvivalent.

Další informace najdete v tématu model Windows Forms a mapování vlastností WPF.

Chování

Následující tabulka popisuje chování spolupráce.

Chování Podporováno Nepodporováno
Transparency model Windows Forms ovládací prvek vykreslování podporuje průhlednost. Pozadí nadřazeného ovládacího prvku WPF se může stát pozadím hostovaných ovládacích prvků model Windows Forms. Některé model Windows Forms ovládací prvky nepodporují transparentnost. Ovládací prvky nebudou TextBoxComboBox například při hostování WPF transparentní.
Tabování Pořadí ovládacích prvků hostovaných model Windows Forms je stejné jako v případě, že jsou tyto ovládací prvky hostované v model Windows Forms aplikaci.

Tabbing from a WPF control to a model Windows Forms control with the TAB key and SHIFT+TAB keys works as usual.

model Windows Forms ovládací prvky, které mají TabStop hodnotu false vlastnosti, se při procházení ovládacích prvků nezobrazí fokus.

– Každý WindowsFormsHost ovládací prvek má TabIndex hodnotu, která určuje, kdy tento WindowsFormsHost ovládací prvek obdrží fokus.
– model Windows Forms ovládací prvky obsažené v kontejneru WindowsFormsHost se řídí pořadím určeným TabIndex vlastností. Tabbing z posledního indexu tabulátoru umístí fokus na další ovládací prvek WPF, pokud existuje. Pokud neexistuje žádný jiný fokusovatelný ovládací prvek WPF, vrátí se tabbing na první model Windows Forms ovládací prvek v pořadí ovládacích prvků.
- TabIndexhodnoty ovládacích prvků uvnitř ovládacích WindowsFormsHost prvků jsou relativní vzhledem k model Windows Forms ovládacím prvkům obsaženým v ovládacím WindowsFormsHost prvku.
- Tabbing respektuje chování specifické pro řízení. Například stisknutím klávesy TAB v ovládacím TextBox prvku, který má AcceptsTab hodnotu true vlastnosti, zadá do textového pole tabulátor místo přesunutí fokusu.
Nevztahuje se.
Navigace pomocí kláves se šipkami - Navigace pomocí kláves se šipkami v ovládacím WindowsFormsHost prvku je stejná jako v běžném ovládacím prvku kontejneru model Windows Forms: Klávesy ŠIPKA NAHORU a ŠIPKA VLEVO vyberte předchozí ovládací prvek a klávesy ŠIPKA DOLŮ a ŠIPKA VPRAVO vyberte další ovládací prvek.
- Klávesy ŠIPKA NAHORU a ŠIPKA VLEVO od prvního ovládacího prvku obsaženého v ovládacím WindowsFormsHost prvku provádějí stejnou akci jako klávesová zkratka SHIFT+TAB. Pokud je ovládací prvek WPF s fokusem, přesune se fokus WindowsFormsHost mimo ovládací prvek. Toto chování se liší od standardního ContainerControl chování v tom, že k žádnému zabalení nedojde k poslednímu ovládacímu prvku. Pokud neexistuje žádný jiný fokusovatelný ovládací prvek WPF, fokus se vrátí na poslední model Windows Forms ovládací prvek v pořadí ovládacích prvků.
- Klávesy ŠIPKA DOLŮ a ŠIPKA VPRAVO od posledního ovládacího prvku obsaženého v ovládacím WindowsFormsHost prvku provádějí stejnou akci jako klávesa TAB. Pokud je ovládací prvek WPF s fokusem, přesune se fokus WindowsFormsHost mimo ovládací prvek. Toto chování se liší od standardního ContainerControl chování v tom, že nedojde k žádnému zabalení na první ovládací prvek. Pokud neexistuje žádný jiný fokusovatelný ovládací prvek WPF, fokus se vrátí na první model Windows Forms ovládací prvek v pořadí ovládacích prvků.
Nevztahuje se.
Akcelerátory Akcelerátory fungují obvyklým způsobem, s výjimkou případů, kdy je uvedeno ve sloupci Nepodporováno. Duplicitní akcelerátory napříč technologiemi nefungují jako běžné duplicitní akcelerátory. Pokud je akcelerátor duplikován mezi technologiemi, aspoň jeden na ovládacím prvku model Windows Forms a druhý v ovládacím prvku WPF, model Windows Forms ovládací prvek vždy přijme akcelerátor. Fokus nepřepíná mezi ovládacími prvky při stisknutí duplicitního akcelerátoru.
Klávesové zkratky Klávesové zkratky fungují obvyklým způsobem, s výjimkou případů, kdy je uvedeno ve sloupci Nepodporováno. – model Windows Forms klávesové zkratky, které se zpracovávají ve fázi předběžného zpracování, mají vždy přednost před klávesovými zkratkami WPF. Pokud máte ToolStrip například ovládací prvek s definovanými klávesovými zkratkami CTRL+S a existuje příkaz WPF vázaný na CTRL+S, ToolStrip obslužná rutina ovládacího prvku se vždy vyvolá jako první bez ohledu na fokus.
– model Windows Forms klávesové zkratky zpracovávané událostí KeyDown se zpracovávají naposledy ve WPF. Toto chování můžete zabránit přepsáním metody ovládacího prvku IsInputKey model Windows Forms nebo zpracováním PreviewKeyDown události. Vraťte true se IsInputKey z metody nebo nastavte hodnotu PreviewKeyDownEventArgs.IsInputKey vlastnosti na true v PreviewKeyDown obslužné rutině události.
PřijímáReturn, AcceptsTab a další chování specifické pro ovládací prvky Vlastnosti, které mění výchozí chování klávesnice fungují jako obvykle, za předpokladu, že ovládací prvek model Windows Forms přepíše metodu IsInputKey vrátit true. model Windows Forms ovládací prvky, které mění výchozí chování klávesnice zpracováním KeyDown události, se zpracovávají naposledy v hostitelském ovládacím prvku WPF. Vzhledem k tomu, že tyto ovládací prvky se zpracovávají jako poslední, můžou způsobit neočekávané chování.
Zadávání a opuštění událostí Když fokus nepřejde na ovládací prvek obsahující ElementHost ovládací prvek, události Enter a Leave se při změně fokusu v jednom WindowsFormsHost ovládacím prvku zobrazí obvyklým způsobem. Události Enter a Leave nejsou vyvolány, když dojde k následujícím změnám fokusu:

- Uvnitř do vnějšího WindowsFormsHost ovládacího prvku.
- Ven do uvnitř WindowsFormsHost ovládacího prvku.
- Mimo WindowsFormsHost kontrolu.
- Z model Windows Forms ovládací prvek hostovaný v ovládacím WindowsFormsHost prvku na ElementHost ovládací prvek hostovaný uvnitř stejného WindowsFormsHost.
Multithreading Podporují se všechny odrůdy multithreadingu. Technologie model Windows Forms i WPF předpokládají model souběžnosti s jedním vláknem. Během ladění vyvolá volání objektů architektury z jiných vláken výjimku pro vynucení tohoto požadavku.
Zabezpečení Všechny scénáře spolupráce vyžadují úplný vztah důvěryhodnosti. V částečném vztahu důvěryhodnosti nejsou povoleny žádné scénáře spolupráce.
Přístupnost Podporují se všechny scénáře přístupnosti. Produkty technologie usnadnění fungují správně, když se používají pro hybridní aplikace, které obsahují ovládací prvky model Windows Forms i WPF. Nevztahuje se.
Schránka Všechny operace se schránkou fungují obvyklým způsobem. To zahrnuje řezání a vkládání mezi ovládacími prvky model Windows Forms a WPF. Nevztahuje se.
Funkce přetažení Všechny operace přetažení fungují obvyklým způsobem. To zahrnuje operace mezi ovládacími prvky model Windows Forms a WPF. Nevztahuje se.

Hostování ovládacích prvků WPF v model Windows Forms

Následující scénáře spolupráce jsou podporovány, když ovládací prvek model Windows Forms hostuje ovládací prvek WPF:

  • Hostování jednoho nebo více ovládacích prvků WPF pomocí kódu

  • Přidružení seznamu vlastností k jednomu nebo více hostovaným ovládacím prvkům WPF

  • Hostování jedné nebo více stránek WPF ve formuláři

  • Spuštění okna WPF

  • Hostování hlavního/podrobného formuláře s model Windows Forms hlavními podrobnostmi a podrobnostmi WPF

  • Hostování hlavního/podrobného formuláře s hlavním serverem WPF a model Windows Forms podrobností.

  • Hostování vlastních ovládacích prvků WPF

  • Hostování hybridních ovládacích prvků

Okolí – vlastnosti

Některé okolní vlastnosti ovládacích prvků model Windows Forms mají ekvivalenty WPF. Tyto okolní vlastnosti se rozšíří do hostovaných ovládacích prvků WPF a zobrazí se jako veřejné vlastnosti ElementHost ovládacího prvku. Ovládací ElementHost prvek přeloží každou model Windows Forms okolí vlastnosti na jeho ekvivalent WPF.

Další informace najdete v tématu model Windows Forms a mapování vlastností WPF.

Chování

Následující tabulka popisuje chování spolupráce.

Chování Podporováno Nepodporováno
Transparency Vykreslování ovládacích prvků WPF podporuje průhlednost. Pozadí nadřazeného model Windows Forms ovládacího prvku se může stát pozadím hostovaných ovládacích prvků WPF. Nevztahuje se.
Multithreading Podporují se všechny odrůdy multithreadingu. Technologie model Windows Forms i WPF předpokládají model souběžnosti s jedním vláknem. Během ladění vyvolá volání objektů architektury z jiných vláken výjimku pro vynucení tohoto požadavku.
Zabezpečení Všechny scénáře spolupráce vyžadují úplný vztah důvěryhodnosti. V částečném vztahu důvěryhodnosti nejsou povoleny žádné scénáře spolupráce.
Přístupnost Podporují se všechny scénáře přístupnosti. Produkty technologie usnadnění fungují správně, když se používají pro hybridní aplikace, které obsahují ovládací prvky model Windows Forms i WPF. Nevztahuje se.
Schránka Všechny operace se schránkou fungují obvyklým způsobem. To zahrnuje řezání a vkládání mezi ovládacími prvky model Windows Forms a WPF. Nevztahuje se.
Funkce přetažení Všechny operace přetažení fungují obvyklým způsobem. To zahrnuje operace mezi ovládacími prvky model Windows Forms a WPF. Nevztahuje se.

Viz také