是否可以在Silverlight Web应用程序和Windows Phone 7应用程序之间共享代码

时间:2010-09-22 08:49:55

标签: silverlight interop windows-phone-7

我有一个简单的Silverlight应用程序,我想在Windows Phone 7上运行几乎完全一样。我创建了一个新的Windows Phone 7项目,当我引用Silverlight应用程序时,我收到一条警告,说“添加对Silverlight项目的引用可能无法正常工作。你想继续吗?”。

如果我继续并尝试运行,WP7项目永远不会启动,或者有时我得到“AG_E_PARSER_BAD_TYPE错误”并且它指向xaml中的行,我使用了Silverlight项目中的控件。

这两个项目之间的代码大约是99%相同。有没有其他方法可以重用代码然后我正在尝试?或者我怎样才能让它发挥作用?

3 个答案:

答案 0 :(得分:4)

我不熟悉这两个平台之间的区别,但您可以将代码文件链接到不同的项目而不会重复它们。添加现有项目,然后单击“添加”或“确定”按钮旁边的向下箭头。选择链接。

答案 1 :(得分:1)

实现这一目标的典型方法是使用像MVVM这样的模式,它允许您定义一个公共模型和视图模型层(可能在一个单独的项目中),定义一个引用该公共项目的不同视图层。

你自己说过,你只会分享大部分代码,而不是所有代码,所以至少在某个时候,你需要创建设备/前端特定的逻辑和布局。

答案 2 :(得分:1)

不是将Silverlight [推测类库]项目添加到WP7应用程序,而是尝试创建WP7类库,然后链接silverlight库中的文件。您仍然只能拥有每个文件的一个副本,但所有库都将适用于它们运行的​​平台。

这也可以帮助您确定问题的原因。错误AG_E_PARSER_BAD_TYPE表示您的Silverlight项目中的XAML中有一个类型,但手机不支持该类型。