如何防止用户控制被初始化?我想自己初始化它,而不是在InitializeComponent()的构造函数中; ?
答案 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();
}
然后在必要的时刻打电话给它。