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

要素構文を使用してのインスタンスをに追加してTextDecorationから、またはTextBlock.TextDecorationsを調整できます。LocationPenOffset

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

Pen( via要素の構文も設定する必要がある場合があります)

于 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

これを行うには、それらの間にセパレータを追加するか、マージンを設定します。

セパレーター:

<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 に答える