2011-03-13 77 views
4

我有一个Silverlight的复杂控件,我需要在WPF中具有相同的功能。任何方式来分享代码库?是否可以为WPF和Silverlight编译相同的控件?

+4

http://msdn.microsoft.com/en-us/library/x435tkbk.aspx +您可以为每个平台创建项目文件。 – 2011-03-13 09:03:52

+0

@Jaroslav Jandek,谢谢C.O. – user626528 2011-03-13 09:07:44

+0

有时可以创建项目并将其他项目的文件添加为链接。但是一些Silverlight控件具有不同的属性,所以条件编译应该有所帮助。 – vorrtex 2011-03-13 16:15:26

回答

3

实际上是由三个方面,将需要共享:

  1. 代码文件(例如*的.cs *的.vb)
  2. XAML文件(包括主题)
  3. 项目文件(例如为*的.csproj和* .vbproj)

由于雅罗指出的那样,你可以使用代码文件,这是由C#VB.Net支持有条件的并发症。请记住,Silverlight项目将默认定义SILVERLIGHT符号,以便您可以在条件语句中使用它。

代码文件的另一个技巧是使用partial classes。这使您可以将仅适用于Silverlight或WPF(但不是两个)的整个代码块放在单个文件中。然后在您的项目中选择性地包含该文件。

XAML文件是一个有点艰难,因为有通过WPF支持几件事情是不支持Silverlight(如自定义MarkupExtensions等)。在实践中,我只需复制XAML文件并根据需要进行合并。

项目文件必须手动维护,这不是一件麻烦事。

0

我写了一个blog article关于共享.xaml文件。我们的想法是在.xaml建立在源代码中的代理控制和使用控制:

namespace UnifiedXaml 
{ 
    public class MyWrapPanel: WrapPanel { } 
} 


<UserControl x:Class="UnifiedXaml.TestControl" 
      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
      xmlns:ux="clr-namespace:UnifiedXaml"> 
    <ux:MyWrapPanel></ux:MyWrapPanel> 
</UserControl> 

如果控制在WPF和Silverlight,use styles不同的功能。

相关问题