Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > WPF и Silverlight > Хостинг WPF в Win32


Автор: Superklug 20.6.2012, 11:56
Здравствуйте!

Мне необходимо разместить WPF UserControl в чужом окне, зная его Handle.

Пишу так:
Код

_decorator = new AdornerDecorator { Child = _child };

var hwndSourceParameters = new HwndSourceParameters();
hwndSourceParameters.ParentWindow = parentWindowHandle;
hwndSourceParameters.PositionX = x;
hwndSourceParameters.PositionY = y;
hwndSourceParameters.Width = width;
hwndSourceParameters.Height = height;
hwndSourceParameters.WindowStyle = (int)(WindowStyle.WS_CLIPCHILDREN | WindowStyle.WS_TABSTOP | WindowStyle.WS_VISIBLE);
hwndSourceParameters.WindowClassStyle = 0x8;
hwndSourceParameters.ExtendedWindowStyle = 0;

if(parentWindowHandle != IntPtr.Zero) {
    hwndSourceParameters.WindowStyle |= (int)(WindowStyle.WS_CLIPSIBLINGS | WindowStyle.WS_CHILD);
}
_hwndSource = new HwndSource(hwndSourceParameters);
_hwndSource.RootVisual = _decorator;


На первый взгляд все работает хорошо. WPF контент отображается. Но есть одна проблема: не обрабатываются нажатия Tab и стрелок. Все перепробовал, ничего не помогает(

Ради интереса попробовал создать ElementHost и затем вызвать SetParent. Все отлично работает... Как добиться этого используя HwndSource?

Очень надеюсь на Вашу помощь...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)