У меня есть класс, который наследует класс TextBox
, назовите его MyTextBox
Я бы хотел переопределить значение по умолчанию Background
для этого класса.
Поэтому я искал способ сделать это и нашел хороший вариант: звоните BackgroundProperty.OverrideMetadata()
Беда в том, где это можно поставить?
в App.OnStartup()
? Уродливый и непрактичный, я бы хотел, чтобы это было в файле кода моего класса.
в конструкторе класса? Я получаю исключение:
PropertyMetadata уже зарегистрирован
для типа «MyTextBox».
(мне кажется, хорошо, я понимаю, почему я это прекрасно понимаю)
Так что я снова посмотрел найденную информацию о статическом конструкторе в C # (раньше об этом не говорили, как жаль)
так вот мой код:
public class MyTextBox : TextBox
{
static MyTextBox()
{
MyTextBox.BackgroundProperty.OverrideMetadata(typeof(MyTextBox), new FrameworkPropertyMetadata(App.Current.Resources["CustomBackgroundBrush"]));
}
}
сейчас я очень доволен этим, но Microsoft - нет. А именно, когда я использую функцию анализа кода, я получаю это:
CA1810: Инициализировать статические поля ссылочного типа inline
Отсюда мой вопрос: что я могу с этим поделать?
- игнорировать предупреждение? >> Я не люблю игнорировать предупреждения
- переместить вызов в метод overrideMetadata? >> Я бы хотел, но где?
любые советы приветствуются, спасибо
Редактировать: Я добавлю, что я не до конца понимаю, почему я получаю это предупреждение, так как я не инициализирую что-либо, скажем, в моем статическом конструкторе, или я?