我正在使用Activator.exe示例创建一个对象。有两种情况下我创建一个对象。一种是在默认状态下创建对象而不考虑功能。第二,当它有一些属性/数据要加载时,我从XML文件中读取。我读取一个xml文件,并根据该文件中的内容创建一个特定的对象,然后调用该对象的方法来加载属性。当用户控件加载时出现问题:在大多数情况下,上下文为空,但并不总是如此。当我创建的对象没有要加载的数据时,不会发生这种情况。
下面的代码将调用该对象:
Type gadgetType = Type.GetType(ObName);
IControl ctrl = (IControl)Activator.CreateInstance(gadgetType);
这段代码在两种情况下都执行。在第二种情况下执行的唯一附加代码如下。
ctrl.CreateFromXml(item);//item is xelement
在Control中,加载的事件是这样的。
void Control_Loaded(object sender, RoutedEventArgs e)
{ ControlViewModel cvm = (ControlViewModel)this.DataContext; //DataContext is null }
1条答案
按热度按时间5n0oy7gb1#
对于有此问题的其他任何人,可以通过处理DataContextChanged事件而不是Loaded事件,在初始化时访问代码隐藏中的DataContext。根据我的经验,DataContext在Loaded事件中通常为null。
在构造函数中:
事件处理程序: