首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在两个Silverlight客户端应用程序中重用用户控件?

如何在两个Silverlight客户端应用程序中重用用户控件?
EN

Stack Overflow用户
提问于 2014-10-24 21:16:43
回答 2查看 50关注 0票数 1

我对Silverlight有点陌生,我有一个解决方案,它有一个提供远程服务的web项目(webApp)和两个使用这些服务的客户端应用程序( client -1和client-2)。

我已经在client-1中创建了一个复杂的用户控件,该控件可以查看/编辑从webApp检索的对象,并且我希望在client-2中重用该控件。

问题是,当您从客户端应用程序引用服务时,类型是“本地类型的”。例如,在客户端-1应用程序中,定义在MyClass中的webApp变成了client-1。在client-2应用程序中使用完全相同的对象(引用),它现在是client-2.2.MyClass类型

如果我创建一个库来承载我的控件,我将不得不添加一个对web服务的引用,并且我将有第三种类型,lib.MyClass。我们都知道client-1、1.MyClass、client-2、1.MyClass和lib.MyClass都是从web.MyClass生成的完全相同的类,但是我找不到解决这个问题的方法。

我目前正在考虑在每个客户端应用程序中共享用户控件的源代码,并在每个项目中定义预处理器,以便在我的用户控制代码文件中这样做:

代码语言:javascript
复制
#if CLIENT-1
using Client-1.WebAppServiceReference
#end if

#if CLIENT-2
using Client-2.WebAppServiceReference
#end if

然后,使用MyClass类型的方法在每个客户端应用程序中使用正确的“本地类型”。但是我遇到了问题,因为xaml中没有预处理器功能,而且有一个对应用程序名称空间的引用,我需要有条件。

有一个更容易的方式重复使用控制的银光项目,不是吗?我不可能在每个项目中拥有该控件源文件的两个副本!

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-10-24 22:02:35

有几个选项允许您跨Silverlight项目/WCF服务代理使用共享实体类。

  1. 使用RIA类库
  2. 使用可移植类库

如果使用上述任何一个创建DataContract类,然后从WCF和Silverlight客户端项目引用库,那么自动生成的代码将使用对这些共享类的引用(而不是本地自动生成的类)。这应该允许您在项目之间重用Silverlight UserControls。

这两种方法的不同之处在于。如果使用第一个方法(RIA项目),那么当您创建名为"SomeEntityClass.shared.cs“的文件时,".shared”将告诉Visual将该文件的副本放置在镜像Silverlight项目中。第二种方法(PCL)是一种较新的方法--它允许您创建能够针对多个平台(.Net、Silverlight、Windows,.)的类库,并减少了一组核心.NET库。

票数 0
EN

Stack Overflow用户

发布于 2014-10-25 19:34:09

我建议您将XAML和图形化的内容从任何业务逻辑中分离出来,等等。MVVM是一个非常好的模式。之后,您可以使用Visual "Add“的非常有用的功能引用第二个项目中的UserControl,在这里您可以这样做:

对于底层业务,您可以将其用于两个项目,并将这两个项目连接起来。

希望它能帮上忙

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26556387

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档