В 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
)