прозрачность C# WPF над элементами управления Winform
у меня есть элемент управления WPF, который я хотел бы наложить на приложение WinForms. Поэтому я послушно создал узел элементов, который может отображать следующий объект 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 просто уничтожает их на экране.
хост элемента создается следующим образом:
dialogHost = new ElementHost();
dialogHost.Child = dialog;
dialogHost.BackColorTransparent = true;
dialogHost.BringToFront();
dialogHost.Show();
есть ли что-то, что я должен делать, а я нет?
существуют ли известные проблемы с показом прозрачные элементы управления WPF над Winforms?
любые статьи, которые могут помочь?
Примечание: этот вопрос связан с этот вопрос
4 ответов
Я думаю, вы столкнулись с проблема в воздушном пространстве. AFAIK, вы не можете смешивать прозрачность WPF и прозрачность ElementHost, так как ElementHost владеет воздушным пространством.
в ссылке есть короткое сообщение о создании непрямоугольных hwnds для размещения контента WPF, и это может помочь вам дальше.
возможно, вы можете рассмотреть возможность переноса большего количества приложений WinForms в WPF?
вы должны прочитать это :черный фон перед загрузкой WPF controll при использовании ElementHost Просто скрыть и показать его (не круто, но работает)
вы, вероятно, уже пробовали это, но как насчет установки непрозрачности на пользовательском элементе управления?