WPF窗口位置
问题描述:
我试图让窗口在主显示器的右下角开始(因为它肯定会用在多显示器系统上)。到目前为止,我已经开始工作了,但窗口首先在屏幕中间的某个地方闪烁一秒钟,然后移动到正确的位置。下面是我有:WPF窗口位置
public MyWindow()
{
InitializeComponent();
Dispatcher.BeginInvoke(DispatcherPriority.Normal, new Action(() =>
{
var workingArea = System.Windows.Forms.Screen.PrimaryScreen.WorkingArea;
var transform = PresentationSource.FromVisual(this).CompositionTarget.TransformFromDevice;
var corner = transform.Transform(new Point(workingArea.Right, workingArea.Bottom));
this.Left = corner.X - this.ActualWidth;
this.Top = corner.Y - this.ActualHeight;
}));
}
我已经试过像隐藏窗口,然后再显示一次搬迁完成显而易见的东西,但似乎并没有工作,要么因为它只是此后再也没表演窗户。
我知道它的一个很小的问题,但它奇怪的是很烦人,我很乐意将它分类!
答
设置在Window.Loaded事件处理程序的窗口位置:
public MainWindow()
{
InitializeComponent();
Loaded += (o, e) =>
{
var workingArea = System.Windows.Forms.Screen.PrimaryScreen.WorkingArea;
var transform = PresentationSource.FromVisual(this).CompositionTarget.TransformFromDevice;
var corner = transform.Transform(new Point(workingArea.Right, workingArea.Bottom));
this.Left = corner.X - this.ActualWidth;
this.Top = corner.Y - this.ActualHeight;
};
}
+0
以为我曾试过....无论如何,它的工作原理。谢谢! – 2012-01-30 14:31:32
您好,我知道这可能是在你的心中早,但希望能帮助。你说你已经通过使用上面提到的代码实现了这一点,为什么不尝试设置窗口的默认可见性折叠,然后在执行代码后将其设置为可见。 – 2012-01-30 14:08:56
由于某种原因,当我这样做时,窗口从未出现。这可能是因为我有可见性= Visibility.Visible在错误的地方,但无论如何,它感觉hacky :) – 2012-01-30 14:39:56
是啊感觉就像一个小三轮车:)无论如何祝贺解决问题,没有我肮脏的想法:) lolz – 2012-01-30 14:41:21