我有一个用于Silverlight的复杂控件,现在需要在WPF中实现相同的功能。是否有办法共享代码库?
我有一个用于Silverlight的复杂控件,现在需要在WPF中实现相同的功能。是否有办法共享代码库?
需要共享的主要有三个方面:
正如 Jaroslav 所指出的那样,您可以在代码文件中使用条件编译,C# 和 VB.Net 均支持。请注意,Silverlight 项目默认将定义 SILVERLIGHT 符号,因此您可以在条件语句中使用它。
代码文件的另一个技巧是使用 部分类。这使您能够将仅适用于 Silverlight 或 WPF(但不是两者都适用)的整个代码块放入单个文件中。然后有选择地将该文件包含在项目中。
Xaml文件有些棘手,因为WPF支持的一些内容Silverlight不支持(例如自定义MarkupExtensions等)。实际上,我只需复制XAML文件并根据需要进行合并即可。我写了一篇关于分享.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>