c # WPF прозрачность над элементами управления Winform - PullRequest
8 голосов
/ 02 июня 2009

У меня есть элемент управления WPF, который я хотел бы наложить на приложение WinForms. Итак, я покорно создал Element Host, который может показывать следующий объект WPF:

<UserControl x:Class="LightBoxTest.LightBox"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Height="300" Width="300" Background="Transparent">
    <Grid Name="dialogHolder" Background="Transparent" Opacity="1">
        <Rectangle Name="rectangle1" Stroke="White" Fill="Black" RadiusX="10" RadiusY="10" Opacity="0.5" />
        <StackPanel Name="stackPanel1" Background="Transparent" Height="300" VerticalAlignment="Top">
            <Rectangle Name="spacer" Opacity="0" Stroke="Gray" Fill="White" RadiusX="10" RadiusY="10" Height="100" Width="300" />
            <Grid Height="100" Name="contentHolder" Width="250">
                <Rectangle Name="dialog" Stroke="Gray" Fill="White" RadiusX="10" RadiusY="10" Height="100" Width="250" />
            </Grid>
        </StackPanel>
    </Grid>
</UserControl>

Проблема в том, что элементы управления в форме WinForm не отображаются, а WPF просто стирает их на экране.

Элемент host создан как:

dialogHost = new ElementHost(); 
dialogHost.Child = dialog;
dialogHost.BackColorTransparent = true;
dialogHost.BringToFront();  
dialogHost.Show();

Есть что-то, что я должен делать, а я нет?

Известны ли проблемы с отображением прозрачных элементов управления WPF для Winforms?

Какие-нибудь статьи могут помочь?

Примечание. Этот вопрос относится к этому вопросу

Ответы [ 4 ]

7 голосов
/ 02 июня 2009

Я думаю, что вы столкнулись с проблемой воздушного пространства . AFAIK, нельзя смешивать прозрачность WPF и прозрачность ElementHost, поскольку ElementHost владеет воздушным пространством.

В ссылке есть небольшая реклама о создании непрямоугольных hwnds для размещения содержимого WPF, и это может продвинуть вас дальше.

Возможно, вы можете подумать о переносе большего количества приложений WinForms в WPF?

2 голосов
/ 18 января 2012

Вы должны прочитать это: Черный фон перед загрузкой wpf-контроллера при использовании ElementHost Просто спрячь и покажи (не круто, но работает)

0 голосов
/ 02 июня 2009

Это похоже на проблему взаимодействия воздушного пространства .

0 голосов
/ 02 июня 2009

Вы, наверное, уже пробовали это, но как насчет установки непрозрачности в пользовательском элементе управления?

...