zoukankan      html  css  js  c++  java
  • MEF 生命周期PartCreationPolicy

    为什么要单独把这个生命周期捞出来单独说一说呢?因为我今天就被这个东东坑了一把……新加了一个界面,第二次打开界面的时候会报错“指定的元素已经是另一个元素的逻辑子元素”。好嘛,我一看,哟,感觉就是xaml有问题啊。当然这个代码是基于MEF框架MVVM模式的。

        [Export("ViewA", typeof(IView))]
        public partial class ViewA : UserControl,IView
        {
            public ViewA()
            {
                InitializeComponent();
            }
        }
        [Export("ViewB", typeof(IView))]
        [PartCreationPolicy(CreationPolicy.NonShared)]
        public partial class ViewB : UserControl,IView
        {
            public ViewB()
            {
                InitializeComponent();
            }
        }

    为了确认是View层的问题,我就换了一下Import的View层(A变为B),结果多次打开界面也没有问题,说明什么?A.xaml果断是有问题的。是把xaml中的所有控件都清除,只保留最底层的Grid,再打开还是报一样的错。跟踪也看不出来,ViewModel没有问题,View的xaml也没有问题,那就只能是View的CodeBehind有问题了,一比对,果然发现少写了PartCreationPolicy。

    上面的内容可能说的不是很清楚,但是只要知道,如果再系统中需要关闭某个界面,再重新打开时需要新创建一个实例的就不能忘记设置PartCreationPolicy.

  • 相关阅读:
    dataTables的导出Excel功能
    jquery生成二维码图片
    angular2表单初体验
    台湾辅仁大学的python教程笔记
    浅说《测试用例》----给测试新手的
    测试员的工作与学习
    简单的表格代码
    特殊效果字体代码
    办公自动化的基本方法
    css网页的几种类型
  • 原文地址:https://www.cnblogs.com/YunGy/p/5050867.html
Copyright © 2011-2022 走看看