gpt4 book ai didi

wpf - 以 mvvm 方式从 MEF 插件获取多个相同的 View

转载 作者:行者123 更新时间:2023-12-03 10:37:17 26 4
gpt4 key购买 nike

我正在尝试开发一个MEF插件软件,以notepad++为例,
每个选项卡将显示从每个插件导入的 View 。

以下界面将在 MEF 组合后提供一个 ConfigView 实例。
但是如何创建多个 ConfigView 实例?

public interface IPluginA:IPlugin {
// View, user control
FrameworkElement CongfigView { get; }
}

--------可能的解决方案---------------------------------------- ----------------------------

其实我是尝试在AvalonDock中使用,发现avalonDock需要dataTemplate来创建多个
意见。这样,插件只需要提供一个 View 数据模板。
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);
}
}

谢谢

最佳答案

只需保留多个 View ,而不是一个...您可以根据是否要动态创建新 View 来保留 List 或 FrameworkElement[]

public interface IPluginA:IPlugin {
// View, user control
IList<FrameworkElement> CongfigViews { get; }
}

关于wpf - 以 mvvm 方式从 MEF 插件获取多个相同的 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21739387/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com