2017-05-17 15 views
1

C#WPFのタグを使用して、標準の電子メールクライアントを開くリンクを作成しようとしています。C#WPFハイパーリンクMailto:バインディングを使用すると本文が印刷されない

これは私のWPFコードです:これはこれまでのところ非常にうまく動作します

<TextBlock> 
<Hyperlink NavigateUri="mailto:[email protected]?subject=SubjectExample&amp;body=BodyExample" RequestNavigate="Hyperlink_RequestNavigate"> 
Click here 
</Hyperlink> 
</TextBlock> 

。今、私はもう少し動的にしたいので、私はすべての必要な情報を持つ変数をバインドしようとしました:

<TextBlock> 
<Hyperlink NavigateUri="{Binding MyValue}" RequestNavigate="Hyperlink_RequestNavigate"> 
Click here 
</Hyperlink> 
</TextBlock> 

公開値MyValueは次のようになります。

public string MyValue{ 
get { return "mailto:" + myEmail + "?subject=" + mySubject + "&amp;body=TEST"; } 

すべては除いて正常に動作します本文。 "TEST"は印刷されるべきですが、それはisntです。拘束力のない私の最初の試みでは印刷されていますが、この場合は印刷されていません。

何か問題がありますか?

+1

を使用すると、渡された値が全体 'STRING'でテストしたことがありますか?そのバインディングにコンバーターを入れて、あなたがそれから得た価値が何であるかを見てください。次に、あなたの文字列に何らかの影響を与えているかどうかを確認する必要があります。 – XAMlMAX

答えて

1

Uri.EscapeDataString方法使用して値をエスケープしてみてください。

public string MyValue 
{ 
    get 
    { 
     return String.Format("mailto:{0}?subject={1}&body=TEST", 
     Uri.EscapeDataString(myEmail), 
     Uri.EscapeDataString(mySubject)); 
    } 
} 
+0

ありがとう!それは1つの変更で動作します:何とかUriのメールアドレスの文字列値を使用することはできません。だから私はこの変数を文字列に直接入れなければならなかった: "mailto:" + email + "?subject = {0}&body = {1}" –

関連する問題