akj*_*shi 6 .net wpf themes custom-controls resourcedictionary
我正在创建一个自定义控件(派生自Control),并希望为控件定义默认主题.以前我创建的所有自定义控件都已使用过
static IntegerUpDown()
{
DefaultStyleKeyProperty.OverrideMetadata(typeof(IntegerUpDown),
new FrameworkPropertyMetadata(typeof(IntegerUpDown)));
}
Run Code Online (Sandbox Code Playgroud)
使用此assembly属性:
[assembly: ThemeInfo(ResourceDictionaryLocation.SourceAssembly,
ResourceDictionaryLocation.SourceAssembly)]
Run Code Online (Sandbox Code Playgroud)
这样做的替代方法是(我在一些控件中也注意到了) -
public IntegerUpDown()
{
DefaultStyleKey = typeof(IntegerUpDown);
}
Run Code Online (Sandbox Code Playgroud)
我想知道这两种方法的优点和缺点,以及哪一种更喜欢?
我可以观察到第一种方法要求依赖属性框架注册默认样式键。它只执行一次(在静态构造函数中),然后用于 的所有实例IntegerUpDown。IntegerUpDown第二种方法在单独创建 的实例时显式分配 Key 。他们俩对我来说似乎都不错。
MSDN 说...
\n\n\n\n可以覆盖元数据,以便子类可以通过覆盖属性\xe2\x80\x99s 元数据来调整 DP,而不是完全\n 重新实现属性本身。
\n