018 Поставяне на net 2 контрол

Импортира System.Windows.Forms.Integration

Сега можем да поставим елемент WebBrowser в този контейнер:

Обърнете внимание, че етикетът WebBrowser се предшества от префикса "mcl" - същият, който посочихме като връзка към библиотеката с връзки System.Windows.Forms (вижте фигурата по-горе). Това завършва поставянето на елемента Net 2.0 във формуляра WPF. Въпреки това, все още трябва да разберете как да получите достъп до този контрол. Превключете в режим на редактиране на VB код и добавете следния код към конструктора NEW():

Dim mc As System.Windows.Forms.WebBrowser = wfh.Child mc.Navigate("http://www.thevista.ru")

Създадохме променлива "mc" от тип WebBrowser и й присвоихме стойността на елемента, който е вътре в контейнера WindowsFormsHost. Този метод ни позволи да получим контрол върху контрола във втория ред. Стартиране на проекта:

WebBrowser
Решихме проблема. Има обаче едно досадно ограничение. Ако се опитате да поставите контрола, различна от Avalon, върху WPF формуляр, който има приложено свойство AllowsTransparency=True, вашата контрола ще бъде невидима! Този въпрос е обсъден широко във форумите на MSDN и аз ще ви дам официалния отговор от програмистите на Microsoft. "Прозрачността на пикселите използва напълно различен модел на показване от Win32 кода. Системното събитие WM_PAINT вече не съществува. Вместо това прозорецът от най-високо ниво създава растерно изображение и го изпраща на операционната система за последващо показване на екрана. Дъщерните прозорци (в зависимост от основния) не попадат в това растерно изображение и следователно не се показват на екрана" И тъй като същият уеббраузър е пълноценен прозорец (по същество, тъй като е изграден на чист Win32),ще бъде невидим при използване на AllowsTransparency. В заключение искам да обърна внимание на факта, че това ограничение не е ограничение на WPF като библиотека, а е следствие от несъвместимостта на Win32 и Avalon чертожни модели.