如何关闭用户控件的初始化

时间:2012-04-17 19:26:32

标签: c# .net wpf silverlight windows-phone-7

如何防止用户控制被初始化?我想自己初始化它,而不是在InitializeComponent()的构造函数中; ?

2 个答案:

答案 0 :(得分:3)

嗯,这看起来很傻,但你已经回答了你的问题;移除对InitializeComponent()的通话。尽情享受重新创建自动生成的设计器代码!

编辑:

好的,所以根据您的编辑,我们知道您要解决的实际问题是:

  

感谢您的回复,但问题有点不同。这个控件不是我的(它是windows live control)。我希望页面中的所有其他控件都能正确初始化,并且应该根据用户需求加载这个控件(它连接到Internet,它是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);  

答案 1 :(得分:3)

我不确定你为什么要这样做。懒惰初始化所以不要花时间在构造?

无论如何,创建一个公共方法并在那里移动InitializeComponent,也不要忘记创建一个私有字段以确保你没有初始化两次。

private bool _isInitialized;

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

    _isInitialized = true;
    InitializeComponent();

} 

然后在必要的时刻打电话给它。