我想開發一個MEF插件軟件,以記事本++爲例,每個選項卡將顯示從每個插件導入的視圖。以mvvm方式從MEF插件獲得多個相同的視圖
以下接口將提供MEF組合後的ConfigView的一個實例。 但如何創建ConfigView的多個實例?
public interface IPluginA:IPlugin {
// View, user control
FrameworkElement CongfigView { get; }
}
--------可能的解決方法--------------------------------- -----------------------------------
其實我試圖在AvalonDock中使用它,並發現avalonDock需要dataTemplate來創建多個 視圖。這樣,插件只需要提供一個視圖數據模板。
internal class PanesTemplateSelector : DataTemplateSelector {
private DataTemplate _fileViewTemplate;
public DataTemplate FileViewTemplate {
get {
return _fileViewTemplate;
}
set { _fileViewTemplate = value; }
}
public DataTemplate FileStatsViewTemplate {
get;
set;
}
public PanesTemplateSelector() {
// convert from usercontrol to data template
FrameworkElementFactory factory = new FrameworkElementFactory(typeof(FileView));
DataTemplate dt = new DataTemplate();
dt.VisualTree = factory;
_fileViewTemplate = dt;
}
public override System.Windows.DataTemplate SelectTemplate(object item, System.Windows.DependencyObject container) {
var itemAsLayoutContent = item as LayoutContent;
if (item is FileViewModel)
return FileViewTemplate;
if (item is FileStatsViewModel)
return FileStatsViewTemplate;
return base.SelectTemplate(item, container);
}
}
感謝
不清楚你所問的,請編輯 –
這是否清楚?謝謝 – Joish
你可以保留一些意見,而不是一個? FrameworkElement CongfigView [] {get; }? –