设置默认样式键的方法之间的差异

时间:2011-10-04 10:59:20

标签: .net wpf themes custom-controls resourcedictionary

我正在创建一个自定义控件(派生自Control),并希望为控件定义默认主题。以前我创建的所有自定义控件都使用了

static IntegerUpDown()
{
    DefaultStyleKeyProperty.OverrideMetadata(typeof(IntegerUpDown), 
    new FrameworkPropertyMetadata(typeof(IntegerUpDown)));
}

使用此assembly属性:

[assembly: ThemeInfo(ResourceDictionaryLocation.SourceAssembly,
ResourceDictionaryLocation.SourceAssembly)]

这样做的替代方法是(我在一些控件中也注意到了) -

public IntegerUpDown()
{
    DefaultStyleKey = typeof(IntegerUpDown);
}

我想知道这两种方法的优缺点以及哪种方法更适合?

1 个答案:

答案 0 :(得分:3)

我可以观察到第一种方法要求依赖项属性框架注册默认样式键。它只执行一次(在静态构造函数中)然后继续它用于IntegerUpDown的所有实例。当IntegerUpDown的实例自己创建时,第二种方法明确地指定Key。他们似乎对我都好。

MSDN说...

  

可以覆盖元数据,以便子类可以调整DP   覆盖属性的元数据,而不是完全   重新实施财产本身。