2009-10-09 108 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