public Environment(Window window, IFocusChanger changer) { _window = window; _changer = changer; _changer.FocusChangeRequested += Changer_FocusChangeRequested; }
private static void Window_DataContextChanged(object sender, DependencyPropertyChangedEventArgs e) { if (sender is Window == false) { return; } var window = (Window)sender; var environment = GetEnvironment(window); environment?.Dispose(); SetEnvironment(window, null); IFocusChanger newChanger = e.NewValue as IFocusChanger; if (newChanger != null) { SetEnvironment(window, new Environment(window, newChanger)); } }