碰到了这个问题,记录一下,以便以后查阅:

在一个WPF项目中使用MahApps.Metro界面框架,其中有一个功能是嵌入一个带句柄的标记。

首先WPF是出了窗体和WebBrowser带有句柄外,其他控件时没有句柄这个概念的。

为了实现播放功能,我必须使用带有句柄的控件,那么WebBrowser是不能作为播放窗口的。

所以我在界面上嵌入:

 <WindowsFormsHost IsEnabled="False">
  <WindowsFormsHost.Background>
    <ImageBrush ImageSource="Images/badge.png" Stretch="Uniform" />
  </WindowsFormsHost.Background>
<winform:PictureBox x:Name="PictureBoxPlayer"/>
</WindowsFormsHost>

但是问题来了,MahApps.Metro框架根本不显示WindowsFormsHost,好像是被遮盖了,但是在VS中可以预览!

解决方法:

在界面中添加以下内容 就可以正确显示WindowsFormsHost了

 xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"
xmlns:behaviours="clr-namespace:MahApps.Metro.Behaviours;assembly=MahApps.Metro"
 <i:Interaction.Behaviors>
  <behaviours:BorderlessWindowBehavior ResizeWithGrip="True" AllowsTransparency="False" />
</i:Interaction.Behaviors>
05-11 11:30