2013-11-29 2 views
1

Мне нужно вставить мой WPF USerControl в Windows.Form. Это мой контроль:Хостинг WPF UserControl в прозрачном Windows.Form

<UserControl x:Class="WpfControlLibrary1.UserControl1" 
      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
      Background="Transparent"> 

    <InkCanvas x:Name="Ink" Background="Transparent" /> 

</UserControl> 

Чтобы разместить этот элемент управления я использую ElementHost объект как только один элемент управления моей формы. Мне нужно иметь возможность сделать следующее: когда я устанавливаю непрозрачность формы на 0, чтобы сделать ее невидимой, мне нужно продолжать иметь непрозрачность всех Children и Strokes My InkCanvas до 1 (так Я их вижу).

Я пробовал использовать свойство TransparencyKey, но похоже, что он не работает с ElementHost. Как я могу решить эту проблему и как установить другую непрозрачность между моей формой и моим UserControl?

ответ

1

AFAIK, что это невозможно, так как WPF использовать Subpixel альфа-рендеринга, который не доступен с WinForm, например

Надежда эта помощь

+0

если бы это было правдой, любое обходное решение? – Nick

+0

взгляните на эту статью, это может быть отправной точкой http://blogs.msdn.com/b/changov/archive/2009/01/19/webbrowser-control-on-transparent-wpf-window.aspx –

+0

Это speeks о WPF Window, мне нужно использовать Windows.Form ... – Nick

0

Вы могли бы использовать Microsoft.Ink.dll, чтобы создать свой собственный WinForms основе UserControl который поддерживает распознавание рукописного ввода, если это то, что вы пытаетесь сделать.

+0

Не могли бы вы ссылаться на любую ссылку? – Nick

+0

Несомненно. Я размещал небольшой пример с использованием библиотеки Microsoft.Ink DLL, перейдите на http://nmctl.codeplex.com, перейдите в исходное дерево и загрузите каталог InkSample. Dll чернил ДОЛЖЕН быть найден в C: \ Windows \ assembly ... FYI существует довольно много библиотек, которые Visual Studio не находит автоматически в этом каталоге, а также в C: \ Windows \ Microsoft.NET) ... –

0

Если вы хотите разместить элемент управления WPF, который ведет себя прозрачно на Win Forms, выполните следующие действия

  • Создание WPF управления UserControl и установить фон = «прозрачным».

  • Создать Win пользовательский элемент управления без каких-либо элементов управления на нем и писать следующий код на его задней части:

    public WinControl() 
    { 
        InitializeComponent(); 
    } 
    protected override CreateParams CreateParams 
    { 
        get 
        { 
         CreateParams cp = base.CreateParams; 
    
         cp.ExStyle |= 0x00000020; 
         return cp; 
        } 
    } 
    
  • Теперь место WPF UserControl на Win управления пользователя и док wpfusercontrol своему родителю (победа пользователя контроль).

  • Теперь перетащите выиграть пользовательский элемент управления на | Win Form и док-станция для выигрыша управления пользователя его родителя (форма)

И вы сделали.