Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A WPF és a Windows Forms két különböző architektúrát mutat be az alkalmazásfelületek létrehozásához. A System.Windows.Forms.Integration névtér olyan osztályokat biztosít, amelyek lehetővé teszik a közös együttműködési forgatókönyveket. Az interoperációs képességeket megvalósító két fő osztály a(z) WindowsFormsHost és ElementHost. Ez a témakör azt ismerteti, hogy mely együttműködési forgatókönyvek támogatottak, és mely forgatókönyvek nem támogatottak.
Megjegyzés:
Különös figyelmet kell fordítani a hibrid vezérlési forgatókönyvre. A hibrid vezérlők egy másik technológia vezérlőibe ágyazott egyik technológiából származó vezérlővel rendelkezik. Ezt beágyazott interoperációnak is nevezik. A többszintű hibrid vezérlés egynél több szintű hibrid vezérlési beágyazással rendelkezik. A többszintű beágyazott együttműködésre példa egy olyan Windows Forms-vezérlő, amely egy WPF-vezérlőt tartalmaz, amely egy másik Windows Forms-vezérlőt tartalmaz. A többszintű hibrid vezérlők nem támogatottak.
Windows Forms-vezérlők üzemeltetése a WPF-ben
A következő együttműködési forgatókönyvek támogatottak, ha egy WPF-vezérlő Windows Forms-vezérlőt üzemeltet:
A WPF-vezérlő egy vagy több Windows Forms-vezérlőt üzemeltethet az XAML használatával.
Kód használatával egy vagy több Windows Forms-vezérlőt is üzemeltethet.
Más Windows Forms-vezérlőket tartalmazó Windows Forms tárolóvezérlőket is üzemeltethet.
Egy fő/részletű űrlapot is üzemeltethet WPF-főkiszolgálóval és Windows Forms-részletekkel.
Ez magában foglalhat egy fő/részletű űrlapot Windows Forms fő komponenssel és WPF részletekkel.
Egy vagy több ActiveX-vezérlőt is üzemeltethet.
Egy vagy több összetett vezérlőt is üzemeltethet.
Hibrid vezérlőket üzemeltethet az Extensible Application Markup Language (XAML) használatával.
Kóddal üzemeltethet hibrid vezérlőket.
Elrendezés támogatása
Az alábbi lista ismerteti azokat az ismert korlátozásokat, amikor az WindowsFormsHost elem megpróbálja integrálni az üzemeltetett Windows Forms-vezérlőt a WPF-elrendezési rendszerbe.
Bizonyos esetekben a Windows Forms vezérlői nem méretezhetők át, vagy csak meghatározott méretekre méretezhetők. A Windows Forms-vezérlők ComboBox például csak egyetlen magasságot támogatnak, amelyet a vezérlő betűmérete határoz meg. A WPF dinamikus elrendezésében, amely feltételezi, hogy az elemek függőlegesen is megnyúlhatnak, a tárolt ComboBox vezérlő nem fog a várt módon nyúlni.
A Windows Forms vezérlői nem forgathatók és nem állíthatók el. Ha például 90 fokkal elforgatja a felhasználói felületet, az üzemeltetett Windows Forms-vezérlők megtartják a függőleges pozíciójukat.
A Legtöbb esetben a Windows Forms-vezérlők nem támogatják az arányos skálázást. Bár a vezérlő általános méretei skálázhatók, előfordulhat, hogy a vezérlő gyermekvezérlői és összetevőelemei nem a várt módon méretezhetők át. Ez a korlátozás attól függ, hogy az egyes Windows Forms-vezérlők mennyire támogatják a skálázást.
A WPF felhasználói felületén módosíthatja az elemek z-sorrendjét az átfedéses viselkedés szabályozásához. A üzemeltetett Windows Forms-vezérlő külön HWND-ben lesz megrajzolva, így mindig a WPF-elemek fölé lesz rajzolva.
A Windows Forms vezérlői támogatják az automatikus skálázást a betűméret alapján. A WPF felhasználói felületén a betűméret módosítása nem méretezi át a teljes elrendezést, bár az egyes elemek dinamikusan átméretezhetők.
Környezeti tulajdonságok
A WPF-vezérlők néhány környezeti tulajdonsága Windows Forms-ekvivalens. Ezeket a környezeti tulajdonságokat a rendszer propagálja az üzemeltetett Windows Forms-vezérlőkre, és nyilvános tulajdonságokként jelenik meg a WindowsFormsHost vezérlőn. A WindowsFormsHost vezérlő az egyes WPF környezeti tulajdonságokat a Windows Forms megfelelőjeként fordítja le.
További információ: Windows Forms és WPF tulajdonságleképezés.
Magatartás
Az alábbi táblázat az együttműködési viselkedést ismerteti.
| Magatartás | Támogatott | Nem támogatott |
|---|---|---|
| Átláthatóság | A Windows Forms vezérlő renderelése támogatja az átláthatóságot. A szülő WPF-vezérlő háttere az üzemeltetett Windows Forms-vezérlők hátterévé válhat. | Egyes Windows Forms-vezérlők nem támogatják az átláthatóságot. Például, ha a WPF üzemelteti, a TextBox és ComboBox vezérlők nem lesznek átlátszóak. |
| Tabulálás | A hosztolt Windows Forms-vezérlők lapsorrendje megegyezik azzal, amikor ezeket a vezérlőket Windows Forms-alapú alkalmazásban hosztolják. A TAB billentyűvel és a SHIFT+TAB billentyűkkel a WPF-vezérlőkről a Windows Forms-vezérlőkre történő lapozás a szokásos módon működik. A tulajdonságértékkel TabStop rendelkező false Windows Forms-vezérlők nem kapnak fókuszt, amikor a felhasználó vezérlőkön keresztül lépeget.- Minden WindowsFormsHost vezérlőnek van egy TabIndex értéke, amely meghatározza, hogy WindowsFormsHost a vezérlő mikor kap fókuszt. – A tárolóban WindowsFormsHost található Windows Forms-vezérlők a tulajdonság által TabIndex megadott sorrendet követik. Az utolsó tabulátorindexről történő lapozás a következő WPF-vezérlőre helyezi a fókuszt, ha van ilyen. Ha nincs más fókuszba helyezhető WPF-vezérlő, a lapozás visszakerül az első Windows Forms-vezérlőre a tabulátor sorrendben. - TabIndex a vezérlőn belüli WindowsFormsHost vezérlők értékei a vezérlőben WindowsFormsHost található testvér Windows Forms-vezérlőkhöz viszonyítva jelennek meg. - A lapozás a vezérlőspecifikus viselkedést tiszteletben tartja. Például, ha megnyomja a TAB billentyűt egy olyan TextBox vezérlőelemben, amelynek AcceptsTab tulajdonságértéke true, akkor a fókusz áthelyezése helyett tabulátort ír be a szövegmezőbe. |
Nem alkalmazható. |
| Navigáció nyílbillentyűkkel | - A vezérlőben WindowsFormsHost a nyílbillentyűkkel való navigálás ugyanaz, mint egy hagyományos Windows Forms-tárolóvezérlőben: A FEL és a BALRA nyílbillentyűk az előző vezérlőt, a LE és a JOBBRA nyílbillentyűk pedig a következő vezérlőt jelölik ki. - A WindowsFormsHost vezérlőben levő első vezérlő FEL és BALRA nyílbillentyűi ugyanazt a műveletet hajtják végre, mint a SHIFT+TAB billentyűparancs. Ha van fókuszba helyezhető WPF-vezérlő, a fókusz a WindowsFormsHost vezérlőn kívülre kerül. Ez a viselkedés abban különbözik a szokásos ContainerControl viselkedéstől, hogy nem történik átvitel az utolsó vezérlőre. Ha nincs más fókuszba helyezhető WPF-vezérlő, a fókusz a tabulátorsor utolsó Windows Forms vezérlőelemére tér vissza. - A WindowsFormsHost vezérlőbe tartozó utolsó vezérlő LE és JOBBRA nyílbillentyűi ugyanazt a műveletet hajtják végre, mint a TAB billentyű. Ha van fókuszba helyezhető WPF-vezérlő, a fókusz a WindowsFormsHost vezérlőn kívülre kerül. Ez a viselkedés abban különbözik a szokásos ContainerControl viselkedéstől, hogy nem történik átirányítás az első vezérlőre. Ha nincs más fókuszba helyezhető WPF-vezérlő, a fókusz visszakerül az első Windows Forms vezérlőre a tabulátorsorrendben. |
Nem alkalmazható. |
| Gyorsítók | A gyorsítók a szokásos módon működnek, kivéve, ha a "Nem támogatott" oszlopban szerepel. | A különböző technológiákban duplikált gyorsítók nem működnek úgy, mint a hagyományos duplikált gyorsítók. Ha egy gyorsító több technológiával duplikálva van, és legalább az egyik a Windows Forms vezérlőn, a másik pedig egy WPF-vezérlőn van, a Windows Forms vezérlő mindig megkapja a gyorsítót. A fókusz nem vált a vezérlők között a duplikált gázpedál lenyomásakor. |
| Gyorsbillentyűk | A billentyűparancsok a szokásos módon működnek, kivéve az „Nem támogatott” oszlopban feltüntetett eseteket. | – Az előfeldolgozási szakaszban kezelt Windows Forms billentyűparancsok mindig elsőbbséget élveznek a WPF billentyűparancsokkal szemben. Ha például ctrl ToolStrip +S billentyűparancsokat tartalmazó vezérlő van definiálva, és a CTRL+S billentyűkombinációhoz kötött WPF-parancs van megadva, a ToolStrip vezérlőkezelő mindig a fókusztól függetlenül először lesz meghívva. – A KeyDown esemény által kezelt Windows Forms billentyűparancsok utoljára kerülnek feldolgozásra a WPF-ben. Ezt a viselkedést megakadályozhatja a Windows Forms vezérlő metódusának felülbírálásával IsInputKey vagy az esemény kezelésével PreviewKeyDown . Térjen vissza true a IsInputKey metódusból, vagy állítsa be a PreviewKeyDownEventArgs.IsInputKey tulajdonság true értékét az PreviewKeyDown eseménykezelőben. |
| AcceptsReturn, AcceptsTab és egyéb vezérlőspecifikus viselkedés | Az alapértelmezett billentyűzet viselkedését módosító tulajdonságok a szokásos módon működnek, feltéve, hogy a Windows Forms vezérlő felülírja a IsInputKey visszatérési truemódszert. |
A Windows Forms-vezérlők, amelyek az KeyDown esemény kezelésével módosítják a billentyűzet alapértelmezett viselkedését, a végén kerülnek feldolgozásra a WPF gazda vezérlőjében. Mivel ezeket a vezérlőket utoljára dolgozzák fel, váratlan viselkedést okozhatnak. |
| Események érkezése és távozása | Ha a fókusz nem a tartalmazó ElementHost vezérlőelemre kerül, az Enter és a Leave események a szokásos módon lesznek emelve, amikor a fókusz egyetlen WindowsFormsHost vezérlőben változik. | Az Enter és a Leave események nem jelennek meg a következő fókuszváltozások esetén: - Belülről a vezérlőn kívülre WindowsFormsHost . - Kívülről egy WindowsFormsHost vezérlőbe. - Egy vezérlőn kívül WindowsFormsHost . – Egy WindowsFormsHost vezérlőben hosztolt Windows Forms-vezérlőtől egy ElementHost vezérlőig, amely ugyanazon WindowsFormsHost-ben van hosztolva. |
| Többszálú | Minden többszálúsági módszer támogatott. | A Windows Forms és a WPF technológiák egyaránt egyszálas egyidejűségi modellt feltételeznek. A hibakeresés során a más szálakból származó keretrendszerobjektumokra irányuló hívások kivételt képeznek a követelmény érvényesítése érdekében. |
| Biztonság | Minden együttműködési forgatókönyv teljes megbízhatóságot igényel. | Részleges megbízhatóság esetén nem engedélyezett az együttműködés. |
| Hozzáférhetőség | Minden akadálymentességi forgatókönyv támogatott. A kisegítő technológiai termékek megfelelően működnek, ha windowsos űrlapokat és WPF-vezérlőket egyaránt tartalmazó hibrid alkalmazásokhoz használják őket. | Nem alkalmazható. |
| Vágólap | Minden vágólap művelet a szokásos módon működik. Ez magában foglalja a Windows Forms és a WPF vezérlők közötti vágást és beillesztést. | Nem alkalmazható. |
| Húzd és ejtsd funkció | Minden húzás és ejtési művelet a szokásos módon működik. Ide tartoznak a Windows Forms és a WPF-vezérlők közötti műveletek. | Nem alkalmazható. |
WPF-vezérlők üzemeltetése a Windows Formsban
A következő együttműködési forgatókönyvek támogatottak, ha egy Windows Forms-vezérlő WPF-vezérlőt üzemeltet:
Egy vagy több WPF-vezérlő üzemeltetése kóddal.
Tulajdonságlap társítása egy vagy több üzemeltetett WPF-vezérlővel.
Egy vagy több WPF-oldal üzemeltetése űrlapban.
WPF-ablak indítása.
Fő/részletű űrlap üzemeltetése windowsos űrlapok főkiszolgálójával és WPF-részleteivel.
Fő/részletű űrlap üzemeltetése WPF-főkiszolgálóval és Windows Forms-részletekkel.
Egyéni WPF-vezérlők üzemeltetése.
Hibrid vezérlők üzemeltetése.
Környezeti tulajdonságok
A Windows Forms-vezérlők néhány környezeti tulajdonsága WPF-ekvivalens. Ezek a környezeti tulajdonságok a üzemeltetett WPF-vezérlőkre vannak propagálva, és nyilvános tulajdonságokként jelennek meg a ElementHost vezérlőn. A ElementHost vezérlő minden Windows Forms környezeti tulajdonságot lefordít a WPF-ekvivalensére.
További információ: Windows Forms és WPF tulajdonságleképezés.
Magatartás
Az alábbi táblázat az együttműködési viselkedést ismerteti.
| Magatartás | Támogatott | Nem támogatott |
|---|---|---|
| Átláthatóság | A WPF-vezérlő renderelése támogatja az átláthatóságot. A szülő Windows Forms-vezérlő háttere a üzemeltetett WPF-vezérlők hátterévé válhat. | Nem alkalmazható. |
| Többszálú | Minden többszálúsági módszer támogatott. | A Windows Forms és a WPF technológiák egyaránt egyszálas egyidejűségi modellt feltételeznek. A hibakeresés során a más szálakból származó keretrendszerobjektumokra irányuló hívások kivételt képeznek a követelmény érvényesítése érdekében. |
| Biztonság | Minden együttműködési forgatókönyv teljes megbízhatóságot igényel. | Részleges megbízhatóság esetén nem engedélyezett az együttműködés. |
| Hozzáférhetőség | Minden akadálymentességi forgatókönyv támogatott. A kisegítő technológiai termékek megfelelően működnek, ha windowsos űrlapokat és WPF-vezérlőket egyaránt tartalmazó hibrid alkalmazásokhoz használják őket. | Nem alkalmazható. |
| Vágólap | Minden vágólap művelet a szokásos módon működik. Ez magában foglalja a Windows Forms és a WPF vezérlők közötti vágást és beillesztést. | Nem alkalmazható. |
| Húzd és ejtsd funkció | Minden húzás és ejtési művelet a szokásos módon működik. Ide tartoznak a Windows Forms és a WPF-vezérlők közötti műveletek. | Nem alkalmazható. |
Lásd még
.NET Desktop feedback