2010-12-29 17 views
0

私は、テキストボックスにハイパーリンクを使用して、私のWPFのアプリへのリンクを追加してい:WPFでHyperLinkのNavigateUriプロパティにバインディングを追加する方法はありますか?

<TextBlock Margin="480,92,460,713" Height="24"> 
<Hyperlink NavigateUri="{Binding MyLink}" RequestNavigate="Hyperlink_RequestNavigate">My Link</Hyperlink> 
</TextBlock> 

バインディング「MyLink」は動作しません。私が使用する必要のあるリンクには、コード内で動的に変更する必要のある変数を持つクエリ文字列があります。 XAMLへのリンクをハードコーディングしようとすると、クエリ文字列にアンパサンドの変数があるため、エラーが発生します。

私はGoogleのようなサイトを指すときに私のリンクが動作しています。私はそれをC#コードで設定し、クエリ文字列に変数を設定する必要があります。これを行う方法はありますか?ありがとう!

+0

私は受け入れ方が分かりませんか?私はすべての鉱山が回答されたと思う。 – Drew

+1

......... – Drew

答えて

1

何がやっていることは動作するはずです...

これがデフォルトWPFアプリケーションを作成し、Window1.xamlのグリッド内に以下のコードを配置テストするには...

 <TextBlock> 
      <Hyperlink NavigateUri="{Binding}" RequestNavigate="Hyperlink_RequestNavigate">My Link</Hyperlink> 
     </TextBlock> 

... Window1.xaml.csでこれを追加してください...

public Window1() 
    { 
     InitializeComponent(); 

     this.DataContext = "whatever the heck i want"; 
    } 

    private void Hyperlink_RequestNavigate(object sender, RequestNavigateEventArgs e) 
    { 
     //e.Uri will display "whatever the heck i want" 
     //which would allow you to do whatever you want 
     //with the URL at that point 

     Process.Start(new ProcessStartInfo("url_you_want_to_use")); 
     e.Handled = true; 
    } 
+0

まだ何らかの理由で私のために働いていない。 datacontextの文字列をgoogleなどのリンクに変更したときにリンクをクリックしても何も起こりません。 – Drew

+0

上記のコードはリンクを使って何もしません。あなたはそれを自分で処理する必要があります...変更された例... e.Uri.AbsoluteUriを使って "url_you_want_to_use"をスワップして、http://www.google.comですぐに動作することを確認してください。 –

+0

ありがとうございます! – Drew

関連する問題