1

現在のスタイルがデフォルトのスタイルである場合にのみ、実行時にスタイルをオブジェクトに適用できるようにしたいと考えています。ユーザー定義のスタイルをオーバーライドしたくありません。誰でもこれを行う方法を知っていますか?

4

2 に答える 2

3

この方法でできるようです:

DependencyPropertyHelper.GetValueSource(
    someControl, FrameworkElement.StyleProperty).BaseValueSource 
    == BaseValueSource.Default;

次のような拡張メソッドでそれをまとめることができます。

static public bool HasDefaultStyle(this FrameworkElement item)
{
    return DependencyPropertyHelper.GetValueSource(
        item, FrameworkElement.StyleProperty).BaseValueSource 
        == BaseValueSource.Default;
}

次に、 を呼び出すだけsomeControl.HasDefaultStyle()です。

また、この記事をご覧ください: WPF の既定のテンプレート

于 2008-12-03T22:16:17.483 に答える
-1

カスタムコントロールの静的プロパティであるDefaultStyleKeyPropertyを確認してください。

string styleKeyName = DefaultStyleKeyProperty.Name;

通常、コントロールに関連付けられているスタイルがない場合、名前は「DefaultStyleKey」になります

于 2008-12-03T22:01:29.400 に答える