我知道你已經解決了你的問題,但我會發佈一個解決方案,我發現它可以幫助其他人。
基本上,您必須聲明SetWindowsPos從Win32中的導入功能,這是簽名
[DllImport("user32.dll", CharSet = CharSet.Auto)]
[return: MarshalAs(UnmanagedType.Bool)]
private static extern bool SetWindowPos(IntPtr hWnd, IntPtr hWndInsertAfter, int X, int Y, int cx, int cy, SetWindowPosFlags uFlags);
的功能需要你的窗口的hWnd,爲了得到它,你可以在初始化添加處理程序你的窗口(例如,你可以監聽「SourceInitialized」事件),並將該值存儲在類的私有成員:
hwndSource = PresentationSource.FromVisual((Visual)sender) as HwndSource;
WPF管理設備無關的像素,讓你從浸需要甚至轉換器真正的像素爲您的sc穎。這是通過這些線路進行:
var source = PresentationSource.FromVisual(this);
Matrix transformToDevice = source.CompositionTarget.TransformToDevice;
Point[] p = new Point[] { new Point(this.Left + e.HorizontalChange, this.Top), new Point(this.Width - e.HorizontalChange, this.Height) };
transformToDevice.Transform(p);
最後,你可以調用SetWindowsPos:
SetWindowPos(this.hwndSource.Handle, IntPtr.Zero, Convert.ToInt32(p[0].X), Convert.ToInt32(p[0].Y), Convert.ToInt32(p[1].X), Convert.ToInt32(p[1].Y), SetWindowPosFlags.SWP_SHOWWINDOW);
來源:
你仍然可以使用API 。 – Code0987