什么请求动态创建用户控件实例?

时间:2009-08-14 17:11:35

标签: silverlight-3.0

我尝试从xap文件动态加载程序集,如下所示:

AssemblyPart asmPart = new AssemblyPart();
StreamResourceInfo streamInfo = Application.GetResourceStream(new StreamResourceInfo(xapFileStream, "application/binary"), new Uri(source, UriKind.Relative));
Assembly asm = asmPart.Load(streamInfo.Stream);
FrameworkElement element = asm.CreateInstance(className) as FrameworkElement;

然后我尝试加载用户控件MainPage。如果MainPage很简单:

如果

namespace TestApp
{
    public partial class MainPage : UserControl
    {
        public MainPage()
        {
            InitializeComponent();
        }
    }
}

没关系。但如果MainPage喜欢:

namespace TestApp
{
    public partial class MainPage : UserControl
    {
        private readonly Dictionary<IWorkbenchWidget, TabControlElement> tabs;


        public MainPage()
        {
            InitializeComponent();
        base.Loaded += new RoutedEventHandler(myHandler);
        }
    }
}

失败了。

那么想知道是否使用Assembly.CreateInstance来创建一个类的实例,对类的任何特殊请求?

1 个答案:

答案 0 :(得分:0)

问题似乎在于:

base.Loaded += new RoutedEventHandler(myHandler);

您没有在MainPage中定义名为“myHandler”的事件处理程序(除非您为了简洁而省略了它)。