2009-06-01 12 views
7

Ho un controllo WPF che vorrei sovrapporre a un'applicazione WinForms. Così ho doverosamente creato un host Elemento che può mostrare il seguente oggetto WPF:C# Trasparenza WPF su controlli Winform

<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> 

Il problema è che i controlli sul WinForm modulo non rendono e il WPF appena li oblitera sullo schermo.

L'host elemento viene creato come:

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

C'è qualcosa che dovrebbe fare e Im non?

Sono noti problemi relativi alla visualizzazione di controlli WPF trasparenti su Winforms?

Eventuali artic che possono essere d'aiuto?

Nota: Questa domanda è legata alla this question

risposta

6

Penso che tu stia imbattendo in un airspace issue. AFAIK, non è possibile combinare la trasparenza WPF e la trasparenza ElementHost poiché ElementHost possiede lo spazio aereo.

C'è un breve collegamento nel collegamento sulla creazione di hwnds non rettangolari per ospitare il contenuto WPF, e questo potrebbe farti più lontano.

Forse è possibile considerare la migrazione di più app WinForms in WPF?

0

Probabilmente già provato questo, ma come circa l'impostazione della opacità sul controllo utente?

0

Sembra il problema di interoperabilità airspace.