1

多くの XAML コードがあり、WPF 4.0 の機能を活用しながら、WPF 3.0 との互換性を維持したいと考えています。UseLayoutRounding例えば、空いていれば利用したいです。もちろん、C# でこれを行うこともできます。

void SetProperty(..)
{
    #if WPF4
     set property
    #endif
}

XAML で同じことを達成するエレガントな方法はありますか?

4

3 に答える 3

3

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}"/>
于 2009-12-17T01:19:48.713 に答える
0

「UseLayoutRounding」プロパティを使用するだけの場合は、その必要はありません。

この値はデフォルトで true であり、Microsoft はこれをオフにすることを推奨しておらず、明示的に true に設定することも推奨していないためです。

于 2009-12-17T01:31:07.290 に答える