如何在 XAML 中添加 ifdef
我有很多 XAML 代码,并且希望在利用 WPF 4.0 功能的同时保持与 WPF 3.0 的兼容性。例如,我想使用 UseLayoutRounding
(如果可用)。当然,我可以在 C# 中执行此操作:
void SetProperty(..)
{
#if WPF4
set property
#endif
}
是否有一种优雅的方法可以在 XAML 中完成相同的操作?
I have a lot of XAML code and would like to stay compatible with WPF 3.0 while taking advantage of the WPF 4.0 features. For example, I'd like to use UseLayoutRounding
if it's available. Of course, I could do this in C#:
void SetProperty(..)
{
#if WPF4
set property
#endif
}
Is there an elegant way to accomplish the same thing in XAML?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
我会以编程方式执行此操作,因为这样您就不必接触 xaml 代码。
在初始化布局根并设置 wpf 4 中所需的所有内容后调用此方法。
I would do it programmatically like, because this way you dont have to touch your xaml code.
Call this method after you initialized your layout root and set all the things you need in wpf 4.
如果您只想使用“UseLayoutRounding”属性,则不需要。
因为这个值默认是true,微软不建议你关闭它,也不建议你显式地将它设置为true。
If you just want to use "UseLayoutRounding" property, you don't need to.
Because this value is true by default and Microsoft doesn't suggest you to turn it off, and also doesn't suggest you to explicitly set it to true.
我认为您可以使用扩展 MarkupExtension 的类来解决您的问题:
而不是在 XAML 中您可以这样使用它:
I think you can solve your problem with a class extending MarkupExtension:
than in XAML you can use it like that: