次の方法で共有


方法 : ハイパーリンク付き文字装飾を使用する

Hyperlink オブジェクトはインラインレベルのフロー コンテンツ要素であり、これを使用すると、フロー コンテンツ内でハイパーリンクをホストできます。 既定では、Hyperlink は、下線を表示するために、TextDecoration オブジェクトを使用します。 TextDecoration オブジェクトは、インスタンス化するために、パフォーマンスに大きな負荷をかけることがあります。特に、多数の Hyperlink オブジェクトを使用する場合には、大きな負荷をかけます。 Hyperlink 要素を広く使用する場合は、MouseEnter イベントのようなイベントが発生したときにだけ下線を表示することを、検討する必要があります。

次の例では、"My MSN" リンクの下線は動的であり、MouseEnter イベントが発生したときにのみ表示されます。

TextDecorations が定義されたハイパーリンク

TextDecorations を表示するハイパーリンク

使用例

下線付きと下線なしで定義されている Hyperlink のマークアップのサンプルを次に示します。

<!-- Hyperlink with default underline. -->
<Hyperlink NavigateUri="https://www.msn.com">
  MSN Home
</Hyperlink>

<Run Text=" | " />

<!-- Hyperlink with no underline. -->
<Hyperlink Name="myHyperlink" TextDecorations="None"
           MouseEnter="OnMouseEnter"
           MouseLeave="OnMouseLeave"
           NavigateUri="https://www.msn.com">
  My MSN
</Hyperlink>

次のコード サンプルでは、Hyperlink の下線を MouseEnter イベントで表示し、MouseLeave イベントで消去する方法を示します。

        ' Display the underline on only the MouseEnter event.
        Private Overloads Sub OnMouseEnter(ByVal sender As Object, ByVal e As EventArgs)
            myHyperlink.TextDecorations = TextDecorations.Underline
        End Sub

        ' Remove the underline on the MouseLeave event.
        Private Overloads Sub OnMouseLeave(ByVal sender As Object, ByVal e As EventArgs)
            myHyperlink.TextDecorations = Nothing
        End Sub
// Display the underline on only the MouseEnter event.
private void OnMouseEnter(object sender, EventArgs e)
{
    myHyperlink.TextDecorations = TextDecorations.Underline;
}

// Remove the underline on the MouseLeave event.
private void OnMouseLeave(object sender, EventArgs e)
{
    myHyperlink.TextDecorations = null;
}

参照

処理手順

方法 : 文字の装飾を作成する

参照

TextDecoration

Hyperlink

概念

WPF アプリケーションのパフォーマンスの最適化