У меня есть граница в XAML/WPF, которую я использую для подчеркивания полной ширины абзаца текстовых заголовков в диалоговом окне. Я установил для его свойства BorderThickness значение «0,0,0,1». В некоторых местах он отображается с подчеркиванием толщиной в 2 пикселя, в то время как в других он правильно отображается как подчеркивание в один пиксель. Что я делаю неправильно?
Вот шаблон элемента управления, который я использую для замены визуального дерева моей метки (я бы подумал, что использование шаблона несущественно):
<ControlTemplate x:Key="HeaderTemplate" TargetType="{x:Type Label}">
<Border BorderThickness="0,0,0,1" Margin="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Margin}">
<Border.BorderBrush>
<LinearGradientBrush StartPoint="0,0" EndPoint="1,0">
<GradientStop Offset="0" Color="Black"/>
<GradientStop Offset="0.6" Color="Black"/>
<GradientStop Offset="1" Color="Transparent"/>
</LinearGradientBrush>
</Border.BorderBrush>
<TextBlock Text="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Content}" Style="{StaticResource HeaderStyle}"
Margin="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Padding}"/>
</Border>
</ControlTemplate>
Я новичок в WPF, поэтому подозреваю, что мне не хватает чего-то фундаментального в его модели рендеринга.
- Отрисовывается ли граница за границей пикселя? Так не кажется, так как я думал, что это будет частично прозрачно, если это так.
- Есть ли способ гарантировать, что я получу то, что я прошу с точки зрения толщины?
- Я хоть ошибся?
И для справки, я не применяю преобразование масштабирования (или любое другое преобразование в этом отношении). Любая помощь будет оценена. :)