6

我有一个来自设计师的样式指南,用于一个看起来像超链接的按钮,我正在尝试使用 WPF 样式尽可能接近它。

但我无法改变文本和下划线之间的距离。我想添加图像进行比较,但不幸的是,到目前为止我还没有获得足够的积分。

有没有办法改变文字和下划线之间的距离?

这是我到目前为止的 XAML 代码:

<Style x:Key="LinkButton" TargetType="ButtonBase">
    <Setter Property="Background" Value="Transparent"/>
    <Setter Property="Cursor" Value="Hand"/>
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="ButtonBase">
                <StackPanel Orientation="Horizontal">
                    <TextBlock Text="&gt; "/>
                    <TextBlock TextDecorations="Underline">
                        <ContentPresenter/>                        
                    </TextBlock>
                </StackPanel>                 
            </ControlTemplate>
        </Setter.Value>
    </Setter>
    <Setter Property="Foreground" Value="{StaticResource LxGrayBrush}"/>
    <Setter Property="FontSize" Value="12"/>
    <Style.Triggers>
        <Trigger Property="IsMouseOver" Value="true">
            <Setter Property="Foreground" Value="{StaticResource LxGreenBrush}"/>
        </Trigger>
    </Style.Triggers>
</Style>
4

4 回答 4

9

使用元素语法将 的实例添加TextDecorationTextBlock.TextDecorations,然后您可以调整LocationPenOffset

<TextBlock>
    <TextBlock.TextDecorations>
        <TextDecoration Pen="..." Location="..."/>
    </TextBlock.TextDecorations>
</TextBlock>

(您可能还需要设置Penvia 元素语法)

于 2012-09-28T22:52:37.943 回答
1
<TextBlock >
    Here is my text to be displayed 
    <TextBlock.TextDecorations>
        <TextDecoration PenOffset="3" PenOffsetUnit="Pixel"/> 
    </TextBlock.TextDecorations>
</TextBlock>

调整 PenOffset 会增加/减少文本和线条之间的间隙。

于 2020-03-02T07:20:15.720 回答
0

您可以通过在它们之间添加分隔符或设置Margin来做到这一点。

分隔器:

<StackPanel Orientation="Horizontal">
    <TextBlock Text="&gt; "/>
    <Separator Width="5" Visibility="Hidden" />
    <TextBlock TextDecorations="Underline">
        <ContentPresenter/>                        
    </TextBlock>
</StackPanel>

利润:

<StackPanel Orientation="Horizontal">
    <TextBlock Text="&gt; " Margin="0,0,5,0" />
    <TextBlock TextDecorations="Underline">
        <ContentPresenter/>                        
    </TextBlock>
</StackPanel>
于 2012-09-28T12:08:58.350 回答
0

要使比“下划线”更接近文本的线有“基线”。它比 HB 解决方案灵活得多,但也更简单。

<TextBlock TextDecorations="Baseline" />
于 2021-01-19T00:04:08.567 回答