Разница между подходами для установки DefaultStyleKey - PullRequest
5 голосов
/ 04 октября 2011

Я создаю пользовательский элемент управления (производный от Control) и хочу определить тему по умолчанию для элемента управления.Ранее все пользовательские элементы управления, которые я создал, я использовал

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

с этим атрибутом assembly:

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

Альтернативный подход для этого есть (что я также заметил в некоторыхСредства управления) -

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

Я хотел бы знать плюсы и минусы этих двух подходов и какой из них предпочесть?

1 Ответ

3 голосов
/ 04 октября 2011

Я могу заметить, что при первом подходе структура свойств зависимости регистрирует ключ стиля по умолчанию. Он делает это только один раз (будучи в статическом конструкторе) и затем используется для всех экземпляров IntegerUpDown. Второй подход назначает Ключ явно, когда экземпляр IntegerUpDown создается сам по себе. Они оба кажутся мне в порядке.

MSDN говорит ...

Метаданные могут быть переопределены, так что подклассы могут настроить DP путем переопределение метаданных свойства, а не полностью повторная реализация самого имущества.

...