2014-04-11 14 views
9

Mục tiêu của tôi là cơ bản: Có nhãn/texblock những gì bạn có trên biểu mẫu WPF được cách điệu để trông giống như một liên kết. Khi được nhấp, điều khiển sẽ mở một cửa sổ soạn thảo e-mail mới trong ứng dụng e-mail mặc định của người dùng. Các mã để thực sự mở cửa sổ e-mail mới có vẻ tầm thường:Liên kết để mở thư email mới trong trình xử lý email mặc định trong ứng dụng WPF

Process.Start("mailto:[email protected]?subject=SubjectExample&body=BodyExample "); 

Tuy nhiên tôi đang gặp rắc rối với hai miếng:

  1. Ràng buộc các "tin nhắn mới mở" hành động với một sự kiện nhãn nhấp chuột .
  2. Cách điệu nhãn để trông giống hệt như siêu liên kết WPF mặc định.

Trả lời

19

Nếu bạn muốn kiểu giống như siêu liên kết, tại sao không chỉ sử dụng một cách trực tiếp?

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

Sau đó thêm:

private void OnNavigate(object sender, RequestNavigateEventArgs e) 
{ 
    Process.Start(e.Uri.AbsoluteUri); 
    e.Handled = true; 
} 
+0

Cảm ơn. Vì lý do nào đó, tôi đã ấn tượng rằng tài sản NavigateUri sẽ không biết cách xử lý mailto, nhưng rõ ràng không phải như vậy. – user3342256

+0

Nếu 'Subject' hoặc' Body' chứa chuỗi '&' thì sao? – iamCR

2

Bạn có thể làm điều này hoàn toàn bằng XAML tương tác sử dụng Expression để gọi vào liên kết nêu trên

xmlns: i = "http://schemas.microsoft .com/expression/2010/tương tác "xmlns: ei =" http://schemas.microsoft.com/expression/2010/interactions "

<Label Content="Send Email"> 
 
    <i:Interaction.Triggers> 
 
    <i:EventTrigger EventName="MouseLeftButtonUp"> 
 
     <ei:LaunchUriOrFileAction Path="mailto:[email protected]" /> 
 
    </i:EventTrigger> 
 
    </i:Interaction.Triggers> 
 
</Label>

+0

Các không gian tên bạn đã sử dụng ở đâu ?. 'ei' là gì? –

+1

Đảm bảo bạn đã cài đặt Blend hoặc bạn sẽ gặp sự cố với cài đặt này. Nếu nó bị thiếu, hãy chạy nó từ Package Manager Console: 'Install-Package Blend.Interctivity.WPF.v4.0' – Alex

+0

Tôi nhận được thông báo lỗi" không tồn tại trong không gian tên XML xmlns: i = "http : //schemas.microsoft.com/expression/2010/interactivity ". – matsolof

Các vấn đề liên quan