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。spa

 

上面的內容可能說的不是很清楚,可是隻要知道,若是再系統中須要關閉某個界面,再從新打開時須要新建立一個實例的就不能忘記設置PartCreationPolicy.code

相關文章
相關標籤/搜索