我正在编写WPF和Silverlight中使用的代码。在C#中,我可以使用"#if SILVERLIGHT"
进行条件编译,它可以工作。
但是,在XAML中,我必须使用完全不同的XAML文件,因为某些属性只是不兼容。
表示XAML文件与99%相似,并保持同步。我想将它们转换为T4模板,因此我可以执行以下操作:
<SomeControl <#=ClipsToBounds()#> />
ClipsToBounds()
为WPF和Silverlight生成不同的文本。要求是:
我发现我可以从custom tool
更改XAML文件上的MSBuild:Compile to TextTemplatingFileGenerator
,但我不会丢失智能感知。但是,生成的模板是在设计时生成的。然后在构建时生成似乎是一个巨大的痛苦。
有没有人有过这种设置的成功经验?
答案 0 :(得分:0)
只有在平台上具有通用行为的通用用户控件才能放在PCL中,但最好的建议是为每个平台保留单独的xaml视图。
答案 1 :(得分:0)
由于似乎没有人根据需要建议基于模板的解决方案,我将分享一些使用针对SL / WPF的项目的经验。许多人会建议使用两个完全独立的XAML文件,每个平台使用不同的视图,并且在很多方面这是“纯粹主义”的事情。但是如果你想消除重复,并降低你的两个目标分开的风险,我当然建议共享XAML文件(使用简单的项目链接)可以很好地工作。
有一些常见的不兼容性: