Сейчас на работе заставляют писать на WPF, но чтобы не забыть WinForms, буду рассматривать реализацию одних и тех же задач и в той, и в другой технологии.
Переопределение стандартных элементов управления
Как правило, стандартных элементов управления вполне хватает, чтобы написать приложение с UI. Если вдруг хочется сделать интерфейс нестандартным, то можно взять чужую библиотеку элементов, например DevExpress.
Но доработка стандартных контролов не такая уж и сложная вещь. Вполне по силам сделать и самому. Чем и предлагаю заняться. Реализую самое простое, что приходит в голову: чекбокс с нестандартным отображением.
CheckBox на WinForms
Здесь один способ. Надо реализовать свой класс:
class MyCheckBox: CheckBox { protected override void OnPaint(PaintEventArgs e) { // рисуем фон, текст, графику } }

CheckBox на WPF
В нашем распоряжение имеется уже два способа.
Первым идет дедовский способ:
class MyCheckBox: CheckBox { protected override void OnRender(DrawingContext dc) { //рисуем программно, аналогично WinForms } }
Второй вариант – переопределить шаблон элемента:
<Checkbox Template="{StaticResource myCheckBox}"/> <Controltemplate x:Key="myCheckBox" TargetType="CheckBox"> <Border>…</Border> <ControlTemplate.Triggers>…</ControlTemplate.Triggers> </ControlTemplate>

Собственно вкратце это все. Исходные коды примера.
Во второй части буду рассматривать написание составных элементов.
My cousin recommended this blog and she was totally right keep up the fantastic work!
ОтветитьУдалитьпользовательские