在 App.xaml.cs 或另一个起始类实例中,您需要添加:
var field = typeof(PresentationSource).GetField("RootSourceProperty", BindingFlags.NonPublic | BindingFlags.Static);
var property = (DependencyProperty)field.GetValue(null);
property.OverrideMetadata(typeof(DependencyObject), new FrameworkPropertyMetadata(property.DefaultMetadata.DefaultValue, OnHwndSourceChanged));
其中,是的RootSourceProperty
私有字段DependecyProperty
。PresentationSource
其属性在HwndSource
创建时使用并设置 RootVisual。所以你只需要使用属性更改回调RootSourceProperty
:
private static void OnHwndSourceChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
}
这很好,因为您可以在所有应用程序中使用它并为所有HwndSource
(或自定义控件,您正在使用的地方Popup
)使用它Window
HwndSource