0

在 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私有字段DependecyPropertyPresentationSource其属性在HwndSource创建时使用并设置 RootVisual。所以你只需要使用属性更改回调RootSourceProperty

private static void OnHwndSourceChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
    {

    }

这很好,因为您可以在所有应用程序中使用它并为所有HwndSource(或自定义控件,您正在使用的地方Popup)使用它WindowHwndSource

4

0 回答 0