使用T4的WPF和Silverlight统一XAML?

Iva*_*kov 6 silverlight wpf t4 xaml

我正在编写WPF和Silverlight中使用的代码.在C#中我可以"#if SILVERLIGHT"用于条件编译,它可以工作.

但是,在XAML中,我必须使用完全不同的XAML文件,因为某些属性只是不兼容.XAML文件是99%的类似,并保持同步是一个麻烦.

我想将它们转换为T4模板,所以我可以做以下事情:

<SomeControl <#=ClipsToBounds()#> />
Run Code Online (Sandbox Code Playgroud)

哪里ClipsToBounds()为WPF和Silverlight生成不同的文本.要求是:

  • 在处理XAML时智能感知
  • 在构建时生成的模板
  • 该项目必须是自包含的,并在Visual Studio的库存版本上工作:不接受安装各种SDK和第三方编辑器
  • 模板运行的结果不应该在源代码管理中. -

我发现我可以更改custom toolXAML文件MSBuild:Compile to TextTemplatingFileGenerator,但我不会丢失Intellisense.但是,生成的模板是在设计时生成的.然后在构建时生成似乎是一个巨大的痛苦.

有没有人有这种设置的成功经验?

小智 0

只有具有跨平台通用行为的通用用户控件才能放置在 PCL 中,但是,最好的建议是为每个平台保留单独的 xaml 视图。