質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

WPF

Windows Presentation Foundation (WPF) は、魅力的な外観のユーザー エクスペリエンスを持つ Windows クライアント アプリケーションを作成するための次世代プレゼンテーション システムです

Q&A

解決済

1回答

5639閲覧

WPFでTextBlock内のハイパーリンク設定

nscut

総合スコア9

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

WPF

Windows Presentation Foundation (WPF) は、魅力的な外観のユーザー エクスペリエンスを持つ Windows クライアント アプリケーションを作成するための次世代プレゼンテーション システムです

1グッド

0クリップ

投稿2020/08/17 06:55

編集2020/08/19 01:07

前提・実現したいこと

WPFを使用しチャットアプリを作成しています。
送受信したメッセージはTextBlockにbindingして表示しています。

このbindingされたテキスト内にhttp(s)から始まるurlはハイパーリンクとして
設定したいのですが、ネット上のサンプルをためしても期待した動きになりません。
理想

発生している問題・エラーメッセージ

以下のやり方では、googleへリンクはするのですが、Click hereの箇所をbindingしたいことと、googleに限らず、それぞれのデフォルトのブラウザを開きたいです。

該当のソースコード

vb

1Imports System.Diagnostics 2Imports System.Windows.Navigation 3Private Sub Hyperlink_RequestNavigate(ByVal sender As Object, ByVal e As RequestNavigateEventArgs) 4 Process.Start(New ProcessStartInfo(e.Uri.AbsoluteUri)) 5 e.Handled = True 6End Sub

xaml

1<TextBlock> 2 <Hyperlink NavigateUri="http://www.google.com" RequestNavigate="Hyperlink_RequestNavigate"> 3 Click here 4 </Hyperlink> 5</TextBlock>

補足

浅学かつこちらへの書き込みが初めてのため、不十分な点が多々あるかと存じますが、
何卒お力添えいただけないでしょうか?
よろしくお願いいたします。

TN8001👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

TN8001

2020/08/17 09:18

> WPFでTextbox内のハイパーリンク設定 xamlではTextBlockのようですが。。 NavigateUriもClick hereの部分もバインディングはできますが、おそらくそういう意味でなくって <TextBlock Text="文章中のhttp://www.google.comです。" /> としたらURLの部分がリンクになってほしいって意味ですよね?
nscut

2020/08/18 00:17

TN8001さん ご反応いただきありがとうございます。 TextBlockの間違いです。ややこしくしてしまい申し訳ございません。 その通りです。URLの部分だけリンクにしたいです! richTextBoxを使うとURLを検出してくれるそうなのですが、richTextBoxだと文章がバインディングできない?ようで困っています。 お忙しいところ恐縮ですが、もしなにかご助言ございましたら頂ければ幸いです。 よろしくお願いいたします。
TN8001

2020/08/18 08:15

> TextBlockの間違いです。 質問は編集できるので直しておいてください^^ 特にタイトルは検索からの流入もあるので重要です。
nscut

2020/08/19 01:13

修正させていただきました。お気遣いいただきありがとうございます。
guest

回答1

0

ベストアンサー

VBでの例がありました。
url - WPF - Making hyperlinks clickable - Stack Overflow

正規表現にこだわりがあるようで、かなり厳しい設定になっています。
認識しないURLもあり、調整がいるかもしれません(最近の割と何でもありなトップレベルドメイン)

xml

1<Window 2 x:Class="MainWindow" 3 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 4 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 5 xmlns:local="clr-namespace:Questions285266" 6 Width="800" 7 Height="450"> 8 <StackPanel> 9 <TextBlock local:NavigationService.Text="文章中のhttp://www.google.comです 文章中のhttp://www.google.comです" /> 10 11 <TextBox x:Name="textBox" Text="もちろんバインドもOKhttp://www.google.com" /> 12 <TextBlock local:NavigationService.Text="{Binding Text, ElementName=textBox}" /> 13 </StackPanel> 14</Window>

アプリ画像

投稿2020/08/18 08:15

編集2023/07/23 04:23
TN8001

総合スコア9862

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nscut

2020/08/19 01:12

参考URLを探してくださりありがとうございます。 上記のやり方で実装してみたのですが、 XAMLの、 <TextBlock local:NavigationService.Text="{Binding Text, ElementName=url}" /> の箇所で "アタッチ可能なプロパティ'Text'が、型'NavigationService'に見つかりませんでした。" というエラーでビルドが通りません。 このエラー文で調べてみたのですが有効な解決策が見つけられず、度々申し訳ございませんが、 もしこのエラーについてご存じなことがございましたら、ご教授いただければ幸いです。 何卒宜しくお願い致します。
TN8001

2020/08/19 08:01

NavigationService.vbにClass NavigationServiceがありますよね?(まるまるコピペで) 出ているエラーは アタッチ可能なプロパティ 'Text' が、型 'NavigationService' に見つかりませんでした。 これだけですか? こういうのも一緒に出てませんか? "NavigationService" は名前空間 "xxx" に存在しません。 'local' は宣言されていないプレフィックスです。 名前空間プレフィックス "local" が定義されていません。 プロパティ 'NavigationService.Text' は、XML 名前空間 'xxx' にありません。 メンバー "Text" が認識されないか、アクセスできません。 <TextBlock local:NavigationService.Text="文章中のhttp://www.google.comです" /> これも同じエラーが出るんですよね? MainWindow.xamlを開きなおしたり、Visual Studioの再起動とかで変わりますか? そのエラーだけを出す状況というのは、ちょっと考えられないのですが。。
nscut

2020/08/19 08:29

お手数をおかけしすみませんでした。 コピペし直したら正しく動作しました! 本当に嬉しいです、ありがとうございました。
TN8001

2020/08/19 08:34

できてよかったです^^ まだできませんと言われたら頭を抱えていたところでした^^;
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問