2012-04-17 62 views
1

如何防止初始化用戶控制?我想自己初始化它,而不是InitializeComponent()中的構造函數; ?如何關閉用戶控制的初始化

+0

感謝答覆,但問題是有一點點不同。這個控件不是我的(它是Windows Live控件)。我希望頁面中的所有其他控件都能夠正確初始化,並且這個應該稍後加載,根據用戶需求(它連接到互聯網,它是wp7應用程序)。如何實現這一目標? – user963935 2012-04-17 19:44:32

+0

我編輯了我的回覆。您應該始終描述真正的問題,而不僅僅是您提出的解決方案。 – 2012-04-17 19:57:57

+0

似乎是http://stackoverflow.com/questions/2567147/how-do-i-declare-ac-sharp-web-user-control-but-stop-it-from-initializing的副本 – 2017-03-02 18:28:11

回答

3

那麼這似乎很愚蠢,但你已經回答了你的問題;刪除呼叫InitializeComponent()。玩得開心重新創建自動生成的設計器代碼!

編輯:

好了,按你的編輯,我們知道你正在嘗試解決實際問題是:

感謝答覆,但問題是有一點點不同。這個控件不是我的(它是Windows Live控件)。我希望頁面中的所有其他控件都能夠正確初始化,並且這個應該稍後加載,根據用戶需求(它連接到互聯網,它是wp7應用程序)。如何實現這一目標?

因此,您需要在運行時而不是在設計時添加控件。這很容易做到。

var ctrl = new SomeControl(); 
// initialize control properties... 

// this is your user control, a control within 
// the user control, whatever the parent should be. 
parentControl.Children.Add(ctrl); 
+0

謝謝,一次前我發佈_actual_問題,並沒有任何答案:)這是工作 – user963935 2012-04-17 20:06:15

3

我不確定你爲什麼這麼做。懶惰的初始化,所以不要花時間在施工?

無論如何,創建一個公共方法並移動InitializeComponent在那裏,也不要忘記創建一個私人領域,以確保您不會初始化兩次。

private bool _isInitialized; 

public void InititializeControl() 
{ 
    if(_isInitialized) return; 

    _isInitialized = true; 
    InitializeComponent(); 

} 

然後調用它,在必要的時刻..

+0

我不會稱之爲「懶惰」,因爲無論如何它將在UI線程上運行,所以它不會在後臺完成 – EvAlex 2012-04-17 22:47:19

+0

@EvAlex,你是對的,尤其是所有的XAML都必須在「唯一的」UI線程上初始化,無論如何。我想我應該把它推遲。 – 2012-04-17 23:47:52