private static void WindowFocusChanging(object sender, FocusChangeEventArgs e) { foreach (var manager in _managers) { var hostContainingFocusedHandle = manager.FindLogicalChildren <HwndHost>().FirstOrDefault(hw => Win32Helper.IsChild(hw.Handle, e.GotFocusWinHandle)); if (hostContainingFocusedHandle != null) { var parentAnchorable = hostContainingFocusedHandle.FindVisualAncestor <LayoutAnchorableControl>(); if (parentAnchorable != null) { _modelFocusedWindowHandle[parentAnchorable.Model] = e.GotFocusWinHandle; if (parentAnchorable.Model != null) { parentAnchorable.Model.IsActive = true; } } else { var parentDocument = hostContainingFocusedHandle.FindVisualAncestor <LayoutDocumentControl>(); if (parentDocument != null) { _modelFocusedWindowHandle[parentDocument.Model] = e.GotFocusWinHandle; if (parentDocument.Model != null) { parentDocument.Model.IsActive = true; } } } } } }
static void WindowFocusChanging(object sender, FocusChangeEventArgs e) { foreach (var manager in _managers) { var hostContainingFocusedHandle = manager.FindLogicalChildren<HwndHost>().FirstOrDefault(hw => Win32Helper.IsChild(hw.Handle, e.GotFocusWinHandle)); if (hostContainingFocusedHandle != null) { var parentAnchorable = hostContainingFocusedHandle.FindVisualAncestor<LayoutAnchorableControl>(); if (parentAnchorable != null) { _modelFocusedWindowHandle[parentAnchorable.Model] = e.GotFocusWinHandle; if (parentAnchorable.Model != null) parentAnchorable.Model.IsActive = true; } else { var parentDocument = hostContainingFocusedHandle.FindVisualAncestor<LayoutDocumentControl>(); if (parentDocument != null) { _modelFocusedWindowHandle[parentDocument.Model] = e.GotFocusWinHandle; if (parentDocument.Model != null) parentDocument.Model.IsActive = true; } } } } }