Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
具有Silverlight、PRISM和MVVM的动态控制显示屏_Silverlight_Mvvm_Prism - Fatal编程技术网

具有Silverlight、PRISM和MVVM的动态控制显示屏

具有Silverlight、PRISM和MVVM的动态控制显示屏,silverlight,mvvm,prism,Silverlight,Mvvm,Prism,在我正在创建的应用程序框架中,我可以将多个插件添加到一个工作区,在那里它们可以根据需要重新排列和调整大小。我希望每个插件能够向通过IWorkspaceManager接口类公开的WorkspaceManager注册所有插件共享的WorkspaceParameters全局参数。当插件注册一个全局参数时,WorkspaceManager首先检查是否有一个与已注册的参数同名的参数,如果已注册,则插件只需订阅,以便在其更改时收到通知。如果尚未使用给定名称创建一个,则会创建一个新名称。WorkspacePa

在我正在创建的应用程序框架中,我可以将多个插件添加到一个工作区,在那里它们可以根据需要重新排列和调整大小。我希望每个插件能够向通过IWorkspaceManager接口类公开的WorkspaceManager注册所有插件共享的WorkspaceParameters全局参数。当插件注册一个全局参数时,WorkspaceManager首先检查是否有一个与已注册的参数同名的参数,如果已注册,则插件只需订阅,以便在其更改时收到通知。如果尚未使用给定名称创建一个,则会创建一个新名称。WorkspaceParameter类当前如下所示:

public class WorkspaceParameter
{
    public string Label { get; set; }
    public Type ParameterType { get; set; }
    public object Value { get; set; }
}
然后,我在应用程序中有一个视图,希望显示每个Workspace参数,以便用户能够更改该值。UI应基于每个WorkspaceParameter的ParameterType成员,并且所有参数都应显示在StackPanel中。例如,如果类型是DateTime,我想显示一个文本框,旁边有一个日历选择器。如果是字符串,则是一个简单的文本框,旁边有标签,最后,如果是枚举类型,则是一个带有可用枚举选项的下拉列表


我如何使用PRISM和MVVM的原理实现这个动态视图?

我建议看一下Glenn Block的一系列博客文章。 在上一篇文章中,他重构了他的解决方案以使用mvvm模式。 他大量使用MEF,这是一个扩展性框架

这是sequal的第5号,请阅读所有这些,基本上这就是你想要的