2009-10-09 110 views
4

这是一个后续回答问题[此处] [1]。动态更改WPF窗口的启动位置

在XAML中定义了WPF窗口的启动位置。现在我想知道如何在代码中更改这些属性?例如,我可以这样说:

Window1.Top = 40在窗口加载事件处理程序?或者我需要设置哪些窗口事件来动态改变起始位置?

目标是在呈现之前动态设置窗口的开始位置。

+0

你是否试图从窗口内部,或者当你从调用代码创建一个新窗口来设置它? – 2009-10-09 20:21:23

回答

7

这是相当容易的代码来完成:

public partial class Window1 { 

    public Window1() 
    { 
     InitializeComponent(); 
     this.Height = 500; 
     this.Width = 500; 
     this.WindowStartupLocation = WindowStartupLocation.Manual; 
     this.Left = 0; 
     this.Top = 0; 
    } 
} 

你可以设置任何你想要的参数,但如果你要设置顶部/左侧,确保设置WindowStatupLocation(或有它在XAML中设置为手动)。

0

就个人而言,在调用InitializeComponent()之后,我会将“Window1.Top = 40”类型的行放入构造函数中。这肯定会在窗口实际呈现之前调用。

编辑:糟糕。我应该仔细阅读。

你是否试图从窗口本身以外的某个类中设置窗口的位置?如果您能够在Window1的构造函数中设置Window1的位置,我的建议将会起作用。

否则,我会说你可以做的最好的事情就是听窗口的Loaded事件,并从那里设置位置。

+1

感谢您的输入!只是为了好奇,就设置窗口的位置而言,从其他类创建窗口的方面而言,难道你不能仅仅使用定位属性作为参数来创建另一个构造函数,那么它会以同样的方式? – Evan 2009-10-09 21:29:01

+0

是的 - 这将是最简单的方法。 – 2009-10-09 21:49:35

+0

好点。我应该想到这一点。 – Stephen 2009-10-09 22:15:41