2012-04-17 9 views
1

ユーザーコントロールが初期化されないようにするにはどうすればよいですか? InitializeComponent()のコンストラクタではなく、自分で初期化したい。 ?ユーザーコントロールの初期化をオフにする方法

+0

おかげでそれを呼び出すが、問題が少し異なっています。このコントロールは私のものではありません(Windowsのライブコントロールです)。私はページの他のすべてのコントロールを適切に初期化する必要があり、これは後で、ユーザーの要求に応じてロードする必要があります(インターネットに接続すると、wp7アプリケーションです)。これを達成する方法は? – user963935

+0

私の返答を編集しました。提案されたソリューションだけでなく、実際の問題点を常に記述する必要があります。 –

+0

http://stackoverflow.com/questions/2567147/how-do-i-declare-ac-sharp-web-user-control-but-stop-it-from-initializingの複製のようです。 –

答えて

3

これは愚かなようですが、すでにあなたの質問に答えています。 InitializeComponent()への呼び出しを削除します。自動生成されたデザイナーコードを再作成して楽しんでください!

EDIT:

[OK]を、あなたの編集ごとに、我々はあなたが解決しようとしている実際問題が何であるかを知っているので:回答について

おかげで、しかし、問題は少し異なっています。このコントロールは私のものではありません(Windowsのライブコントロールです)。私はページの他のすべてのコントロールを適切に初期化する必要があり、これは後で、ユーザーの要求に応じてロードする必要があります(インターネットに接続すると、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

3

なぜあなたはそれをやっているのかわかりません。怠惰な初期化ので、建設に時間がかかることはありませんか?

とにかくパブリックメソッドを作成してそこにInitializeComponentを移動すると、プライベートフィールドを作成して2回初期化しないことを忘れないでください。

private bool _isInitialized; 

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

    _isInitialized = true; 
    InitializeComponent(); 

} 

そして...必要な瞬間に、返信用

+0

とにかくUIスレッドで実行されるので、私はそれを "怠け者"と呼ぶわけではないので、バックグラウンドでは行われません – EvAlex

+0

@EvAlex、特に、すべてのXAMLを「唯一の」UIスレッドで初期化する必要があります私はそれを遅らせておくべきだったと思います。 –

関連する問題