多くの XAML コードがあり、WPF 4.0 の機能を活用しながら、WPF 3.0 との互換性を維持したいと考えています。UseLayoutRounding
例えば、空いていれば利用したいです。もちろん、C# でこれを行うこともできます。
void SetProperty(..)
{
#if WPF4
set property
#endif
}
XAML で同じことを達成するエレガントな方法はありますか?
多くの XAML コードがあり、WPF 4.0 の機能を活用しながら、WPF 3.0 との互換性を維持したいと考えています。UseLayoutRounding
例えば、空いていれば利用したいです。もちろん、C# でこれを行うこともできます。
void SetProperty(..)
{
#if WPF4
set property
#endif
}
XAML で同じことを達成するエレガントな方法はありますか?
MarkupExtension を拡張するクラスで問題を解決できると思います。
[MarkupExtensionReturnType(typeof(bool))]
public class IsWPF4Extension : MarkupExtension
{
public override object ProvideValue(IServiceProvider serviceProvider)
{
#if WPF4
return true;
#endif
return false;
}
}
XAML よりも、次のように使用できます。
<MyControl UseLayoutRounding="{IsWPF4}"/>
「UseLayoutRounding」プロパティを使用するだけの場合は、その必要はありません。
この値はデフォルトで true であり、Microsoft はこれをオフにすることを推奨しておらず、明示的に true に設定することも推奨していないためです。