【WPF】TextBlockの見た目を変えないでURLをリンクする
意外とパッとできなかった(wpfはいつもこうだ)のでメモ
HyperLinkの貼り方
HyperLinkがあるけどNavigateUriを指定するだけでは飛んでくれないRequestNavigateを指定してコード側で飛ばす
<Hyperlink
NavigateUri=任意のURL
RequestNavigate="Hyperlink_RequestNavigate"
>
Click Here
</HyperLink>
private void Hyperlink_RequestNavigate(object sender, System.Windows.Navigation.RequestNavigateEventArgs e)
{
System.Diagnostics.Process.Start(e.Uri.ToString());
}
TextBlockと見た目を揃える
<TextBlock Style=任意のスタイル>
<Hyperlink
NavigateUri=任意のURL
RequestNavigate="Hyperlink_RequestNavigate"
>
<Hyperlink.Style>
<Style TargetType="Hyperlink">
<Setter Property="Foreground" Value="{Binding Foreground,RelativeSource={RelativeSource FindAncestor,AncestorType=TextBlock}}"/>
<Setter Property="TextDecorations" Value=""/>
</Style>
</Hyperlink.Style>
Click Here
</Hyperlink>
</TextBlock>
・親のTextBlockからForegroundの色をHyperLinkのものにバインドする
・マウスホバーしたときアンダーバーが出るのでTextDecorationsを空にする
スタイルによってはもうちょっといじらないとだめかも
参考
https://stackoverflow.com/questions/2092890/add-hyperlink-to-textblock-wpf
https://stackoverflow.com/questions/1252889/changing-hyperlink-foreground-without-losing-hover-color
https://stackoverflow.com/questions/2247987/styling-both-hyperlink-and-textblock-with-a-single-style
もしお役に立ちましたらスキ(♡マーク)をお願いします!!! noteアカウントがなくても大丈夫です。サポートもお待ちしています!