Silverlight Composite应用程序

时间:2011-07-13 11:36:28

标签: silverlight mvvm prism modularity

我正在试图弄清楚什么是我面临的问题的最佳解决方案。我有一个Silverlight应用程序,它应该由不同的模块组成。我可以使用Prism,放置区域和加载模块,并用加载的模块填充区域,但这在我的情况下是不够的。这就是我想要完成的事情:

  • 对于从不同的xap文件加载的大多数视图,我应该在shell中的某个位置放置一个元素,它将执行导航到动态加载的视图。
  • 该元素(链接到动态加载的视图)应该支持本地化,并且应该具有可动态分配的数据模板,不同的模块链接应该具有不同的内容/数据模板(我想在服务器上的xaml文件中编写数据模板并阅读他们来自Silverlight通过XamlReader,也许有更好的方法?)。
  • Uri映射和浏览器日志应该与导航一起使用。 Silverlight默认导航机制比Prism中的更适合我的需求。
  • 架构应该支持MVVM。

我认为这就是全部。我想不出一个能满足我所有需求的好建筑。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

我不知道哪一种产品/解决方案能满足您的所有要求,因此以下是对每种产品/解决方案的一些评论:

  1. 如果shell的一个区域有一个支持多个项目的区域,则只需在每个模块中注册一个类型为link / button etc的控件,并使用相同的区域名称。例如,我们使用名为“views”的区域注册基于Telerik TadRibbonTab(而不是UserControl)的视图,该区域是带有名为“views”的区域的RibbonBarTab。然后每个模块将其自己的按钮添加到列表中。您可以对任何多项容器执行相同的操作。
  2. 本地化是一个完全不同的问题,可以通过多种方式解决。请在此处查看我的回答:Load Resources ".resx" from folder in Silverlight
  3. 可以使自定义导航映射器的行为与标准导航映射器相同,而不会破坏对Prism区域的支持。我们创建的那个将GUI信息(例如当前选择(当前视图和项目选择等))编码到URL中。这意味着我们完全控制状态,URL控制状态。
  4. 几乎没有什么能阻止你使用MVVM,因为这是将视图与代码隐藏数据分开的一个小功能。
  5. 我会对提出的其他解决方案感兴趣,因为我们也一直在寻找新的想法。