2013-03-06 47 views
4

我想覆蓋包含ActiveX控件嵌入VLC的WindowsFormsHost上的按鈕。我的問題是,activeX始終在wpf之上。有沒有什麼辦法可以通過對activeX控件進行wpf控制?wpf over activeX

VLC控件似乎也不支持渲染到位圖。

回答

4

我終於找到了解決辦法。 popup基元也是一個始終位於頂部並且可以放置在vlc控件上的元素。它有點破解,但它得到我需要的覆蓋。我的球員xaml看起來像這樣

<grid> 
    <WindowsFormsHost x:Name="Host" 
         Height="200" 
         Width="200" /> 
    <Border x:Name="Anchor" 
      Height="0" 
      Width="0" 
      HorizontalAlignment="Left" 
      VerticalAlignment="Top" /> 
    <Popup Width="{Binding ElementName=Host,Path=Width}" 
      Height="{Binding ElementName=Host,Path=Height}" 
      PlacementTarget="{Binding ElementName=Anchor}" 
      AllowsTransparency="True" 
      IsOpen="True"> 
     <Border Background="#30808080" 
       Width="{Binding ElementName=Host,Path=Width}" 
       Height="{Binding ElementName=Host,Path=Height}"> 
      <Button Content="Start" 
        Height="20" 
        Width="60" 
        Click="button1_Click"/> 
     </Border> 

    </Popup> 
</grid> 

上面在包含按鈕的vlc播放器上放置了一個淺灰色透明層。上述內容並沒有說明窗口是否調整大小或移動了,但是將wpf放在控件上的問題已經解決。

1

短的答案:號

MSDN提取:

在WPF用戶界面,可以元素的z順序更改爲 控制重疊行爲。託管的Windows窗體控件在單獨的HWND中繪製爲 ,因此它總是繪製在WPF元素的頂部。