Silverlight复合应用程序



我正在努力找出解决我所面临的问题的最佳方法。我有一个Silverlight应用程序,应该由不同的模块组成。我可以使用Prism,放置区域和加载模块,并用加载的模块填充区域,但这在我的情况下是不够的。以下是我想要完成的:

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

我想就这些了。我只是想不出一个能满足我所有需求的好建筑。

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

  1. 如果shell的一个区域有一个支持多个项目的区域,您只需在每个模块中注册一个具有相同区域名称的link/button等类型的控件。例如,我们注册基于Telerik TadRibbonTab(而不是UserControl)的视图,它有一个名为"views"的区域,这是一个名为"views"的区域的RibbonBarTab。然后,每个模块将自己的按钮添加到列表中。你可以对任何多项目容器做同样的事情。
  2. 本地化是一个完全不同的问题,可以通过多种方式解决。在这里看到我的答案:加载资源".resx"从Silverlight文件夹
  3. 一个自定义的导航映射器可以像标准的一样工作,而不会搞乱对Prism区域的支持。我们创建的代码将GUI信息,如当前选择(当前视图和项目选择等)编码到URL中。这意味着我们完全控制状态,而URL控制状态。
  4. 几乎没有什么可以阻止你使用MVVM,因为这是一个将视图与代码隐藏数据分离的小功能。

我对你们提出的其他解决方案很感兴趣,因为我们也一直在寻找新的想法。

最新更新