在WPF窗口中, SizeChanged 事件提供Rmisc
,它在调整大小之前包含窗口大小:
e.PreviousSize
有时,例如,通过拖动窗口的顶部边框来调整大小,更改Window Location ,所以我想在调整大小之前获得窗口位置,如下所示:
private void Window_SizeChanged(object sender, SizeChangedEventArgs e)
{
var previousWidth = e.PreviousSize.Width;
你有什么好主意吗? THX。
答案 0 :(得分:0)
没有属性可以返回上一个窗口位置,因此您必须以某种方式自己跟踪它。例如,您可以处理窗口的LocationChanged事件并跟踪队列中的位置,然后在SizeChanged事件处理程序中检查这些位置。像这样:
public partial class Window1 : Window
{
Queue<Point> _locations = new Queue<Point>();
public Window1()
{
InitializeComponent();
_locations.Enqueue(new Point(this.Left, this.Top));
LocationChanged += (s, e) => _locations.Enqueue(new Point(this.Left, this.Top)); ;
SizeChanged += (s, e) =>
{
if(IsLoaded)
{
Point lastPosition = _locations.Dequeue();
while (lastPosition.X == this.Left && lastPosition.Y == this.Top && _locations.Count > 0)
lastPosition = _locations.Dequeue();
if (_locations.Count == 0)
_locations.Enqueue(lastPosition);
//...
}
};
}
}