Я родом из Windows Forms, и я немного смущен тем, что считается лучшей практикой для управления отображением элемента управления. Я работаю над элементом управления, на котором хочу немного «конфетки для глаз». В WinForms я бы переопределил событие Paint, чтобы выполнить любое визуальное программирование. Я понимаю, что основная причина, по которой был задуман WPF, заключается в том, чтобы отделить действие от отображения.
Вот та часть, в которой я не уверен. Скажем, я хочу нарисовать несколько простых линий на «фоне» элемента управления. Будет ли лучшей практикой добавлять строки в шаблон или выполнять отрисовку линий в программном коде, как я сделал бы в WinForms?
Например, скажем, я разрабатываю элемент управления с именем CustomControl1 и хочу нарисовать линию по всей ширине элемента управления, центрированную по вертикали, например:
Лучше сделать строку в Code Behind или в шаблоне?
Я могу сделать это полностью в xaml следующим образом:
<Style TargetType="{x:Type local:CustomControl1}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type local:CustomControl1}">
<Border Padding="{TemplateBinding Padding}"
Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}">
<Grid HorizontalAlignment="Left" Width="{Binding ActualWidth}">
<Border HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Background="Aqua">
<Path Stretch="Fill" Stroke="Black" StrokeThickness="1" Data="M 0,0.5 H 1" />
</Border>
<TextBlock
HorizontalAlignment="Center"
Text="Some Text" />
</Grid>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
Я не уверен, что это «лучшая практика» или есть другой способ, который я должен использовать все вместе? Есть ли одна причина использовать один над другим? Есть ли прирост/потеря производительности?