2009-10-31 12 views
2

我只是在想什麼。我有一個加載頁面的框架,當前每個頁面都有一個Page_Loaded方法,每次訪問該頁面時都會運行該方法。這很好,但我注意到,如果我使用導航去以前訪問過的頁面錯誤。回到頁面後,Page_Loaded被再次調用,我不想要。WPF,在InitializeComponent之後直接放置代碼的不良做法?

使用調試,我注意到InitializeComponent只是得到稱爲頁面第一次實現並想知道如果我可以簡單地把我Page_Loaded這個代碼調用,比如打完:

public partial class MyPage: Page 
{ 
    public MyPage() 
    { 
     InitializeComponent(); 
     //======> To Here 
    } 

    private void Page_Loaded(object sender, RoutedEventArgs e) 
    { 
     //Put Code from here <====== 
    } 
} 

這樣就解決了我的問題但是不好的做法?如果是這樣,我會遇到什麼問題?

感謝, 鋼鈑

回答

5

這是合法的做一些事情在構造函數中。我認爲這很好。

WPF在對象的可訪問性等方面不太像ASP.NET。它有點鬆散,所以在構造函數中做某些事情時不會引用ASP.NET中的「否」。

+0

好,只是我希望的答案。感謝您讓我放心:) – 4imble 2009-10-31 15:35:51

1

當你指出Page_Loaded事件將在每次刷新頁面時被觸發,所以如果你希望代碼只執行一次,那麼把它放在構造函數中是合乎邏輯的地方。

取決於你需要多少代碼,你可能會考慮將其重構爲另一種方法 - 但這完全是個人品味問題(或者可能遵循編碼標準)。

UPDATE

我猜想,作爲用於生成tehBuildings查詢是返回null(說明明顯),那麼您需要調用getBuildings之前調用一些其他的代碼。沒有看到你的原始代碼,我不想說現在丟失了什麼。

相關問題