WPF, Окно крюка, Всплывающее окно
В 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
)