vs2010中,c#的wpf添加一个自定义控件后,在编辑器中(不是编译后)会执行代码,如Messagebox
如下操作:(不算打开VS2010的时间,最多两分钟搞出这个问题)
1.随便创建一个wpf的程序
2.然后添加一个wpf的usercontrol控件
3.在新添加的usercontrol控件的构造函数中加入一Messagebox.show("...:");如下代码(高手直接复制过去,省的自己写了)
public UserControl1()
{
InitializeComponent();
MessageBox.Show("tmd");
}
4,先生成一下程序,要不然有时会找不到自定的Usercontrol控件
5,然后在主窗口中将新的Usercontrol控件从工具栏中拖到主窗口中
神奇的事出现了,我没有运行程序,但是 vs2010却弹出了一个Messagebox "tmd" .
6;.可将主窗口的视图编辑文档关闭,然后再通过解决方案资源管理器将其打开,然后这个 tmd 又出现了
我当然不会无聊到加一个Messagebox.show在Usercontrol的构造函数中,但是我这里确实需要执行一些代码(在程序运行时),然而因为在视图编辑时,wpf会自动运行下Usercontrol1()的构造函数,造成我需要在运行时才会有效的一些代码在这里无效,从而让视图编辑器直接罢工,说我需要解决XXX为NULL等等的问题.
我的本意是在控件加载后,需要初始化或修改一些变量,仅在控件有效期内执行一次即可,貌似只能在构造函数或是UserControl_Initialized事件中执行,其余的事件如loaded会因为切换窗口,如TabControl控件的标签切换,被触发多次loaded.这不是我想要的效果
请问这个问题应该怎么解决?