我对Silverlight有一个复杂的控件,我需要在WPF中具有相同的功能。有什么方法可以共享代码库吗?
答案 0 :(得分:3)
实际上需要分享三个方面:
正如Jaroslav指出的那样,您可以对代码文件使用条件复杂化,C#和VB.Net支持这些代码文件。请记住,Silverlight项目默认定义SILVERLIGHT符号,因此您可以在条件语句中使用它。
代码文件的另一个技巧是使用partial classes。这允许您将可能仅适用于Silverlight或WPF(但不是两者)的整个代码块放在单个文件中。然后有选择地在项目中包含该文件。
Xaml文件有点难度,因为Silverlight不支持WPF支持的一些内容(例如自定义MarkupExtensions等)。实际上,我只需复制XAML文件并根据需要进行合并。
项目文件必须手动维护,这不是一件容易的事。
答案 1 :(得分:0)
我写了一篇关于共享.xaml
文件的blog article。我们的想法是在您的源代码中创建代理控件,并在.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。