Dot-Net

是否可以獲得 WPF Popup 控制項的 Hwnd?

  • December 12, 2018

我只需要對自定義形狀的 WPF 視窗的一部分應用 Aero 背景模糊。問題是要使用 DWM 應用模糊,我需要為該DwmEnableBlurBehindWindow函式提供一個視窗句柄。

我被告知 WPF 彈出控制項實際上是一個單獨的視窗。那很好。我可以得到一個彈出視窗的句柄來對其應用模糊嗎?如果是這樣,怎麼做?

嘗試這個

HwndSource source = (HwndSource)HwndSource.FromVisual(myPopup)

或者這個,但這個只適用於實際的 Windows,但可能有助於將來的參考。

IntPtr handle = new WindowInteropHelper(myWindow).Handle;

嘗試這個:

<Popup Name="MyPop" IsOpen="True" Height="50" Width="50">
   <!--or other control-->
   <Rectangle/> 
</Popup>


// only after MyPop.IsOpen is true
IntPtr handle =  ((HwndSource)PresentationSource.FromVisual(MyPop.Child)).Handle;

引用自:https://stackoverflow.com/questions/7815121