| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- /*************************************************************************************
- Extended WPF Toolkit
- Copyright (C) 2007-2013 Xceed Software Inc.
- This program is provided to you under the terms of the Microsoft Public
- License (Ms-PL) as published at http://wpftoolkit.codeplex.com/license
- For more features, controls, and fast professional support,
- pick up the Plus Edition at http://xceed.com/wpf_toolkit
- Stay informed: follow @datagrid on Twitter or Like http://facebook.com/datagrids
- ***********************************************************************************/
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Windows.Media;
- using System.Windows;
- using System.Windows.Interop;
- namespace Xceed.Wpf.AvalonDock
- {
- static class WindowHelper
- {
- public static bool IsAttachedToPresentationSource(this Visual element)
- {
- return PresentationSource.FromVisual(element as Visual) != null;
- }
- public static void SetParentToMainWindowOf(this Window window, Visual element)
- {
- var wndParent = Window.GetWindow(element);
- if (wndParent != null)
- window.Owner = wndParent;
- else
- {
- IntPtr parentHwnd;
- if (GetParentWindowHandle(element, out parentHwnd))
- Win32Helper.SetOwner(new WindowInteropHelper(window).Handle, parentHwnd);
- }
- }
- public static IntPtr GetParentWindowHandle(this Window window)
- {
- if (window.Owner != null)
- return new WindowInteropHelper(window.Owner).Handle;
- else
- return Win32Helper.GetOwner(new WindowInteropHelper(window).Handle);
- }
- public static bool GetParentWindowHandle(this Visual element, out IntPtr hwnd)
- {
- hwnd = IntPtr.Zero;
- HwndSource wpfHandle = PresentationSource.FromVisual(element) as HwndSource;
- if (wpfHandle == null)
- return false;
- hwnd = Win32Helper.GetParent(wpfHandle.Handle);
- if (hwnd == IntPtr.Zero)
- hwnd = wpfHandle.Handle;
- return true;
- }
- public static void SetParentWindowToNull(this Window window)
- {
- if (window.Owner != null)
- window.Owner = null;
- else
- {
- Win32Helper.SetOwner(new WindowInteropHelper(window).Handle, IntPtr.Zero);
- }
- }
- }
- }
|