2014-04-11 8 views
9

Mój cel jest prosty: uzyskaj etykietę/texblocka co-masz-ciebie na formularzu WPF, który jest stylizowany na link. Po kliknięciu kontrolka powinna otworzyć nowe okno kompozycji e-mail w domyślnej aplikacji e-mail użytkownika. Kod faktycznie otworzyć nowe okno e-mail wydaje się banalna:Link do otwartej nowej wiadomości e-mail w domyślnym programie obsługi poczty e-mail w aplikacji WPF

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

Jednak mam problemy z dwóch części:

  1. wiązania „Nowa wiadomość” otwartą akcję do zdarzenia click etykieta .
  2. Stylizacja etykiety tak, aby wyglądała dokładnie jak domyślny hiperlink WPF.

Odpowiedz

19

Jeśli chcesz, aby styl był jak hiperłącze, dlaczego nie chcesz użyć go bezpośrednio?

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

Następnie dodać:

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

Dzięki. Z jakiegoś powodu byłam pod wrażeniem, że własność NavigateUri nie wiedziałaby, jak sobie z tym poradzić, ale najwyraźniej tak nie jest. – user3342256

+0

Co jeśli "Temat" lub "Ciało" zawiera ciąg '&'? – iamCR

2

Można to zrobić wyłącznie w XAML interakcje używając wyrażenia zadzwonić link wspomniano powyżej

xmlns: I = "http://schemas.microsoft .com/wyrażenie/2010/interaktywność "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

Gdzie są używane przestrzenie nazw? co to jest "ei"? –

+1

Upewnij się, że masz zainstalowane narzędzie Blend, bo inaczej napotkasz problemy z tym. Jeśli go brakuje, uruchom to z Konsoli menedżera pakietów: 'Install-Package Blend.Interctivity.WPF.v4.0' – Alex

+0

Pojawia się komunikat o błędzie" nie istnieje w przestrzeni nazw XML xmlns: i = "http : //schemas.microsoft.com/expression/2010/interactivity ". – matsolof