2014-04-11 11 views
9

Il mio obiettivo è di base: avere un'etichetta/texblock cosa-hai su un modulo WPF stilizzato per sembrare un collegamento. Quando si fa clic, il controllo dovrebbe aprire una nuova finestra di composizione e-mail nell'app di posta elettronica predefinita dell'utente. Il codice per aprire realmente la nuova finestra e-mail sembra banale:Collegamento per aprire un nuovo messaggio di posta elettronica nel gestore di posta elettronica predefinito nell'applicazione WPF

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

Tuttavia sto avendo problemi con due pezzi:

  1. Binding l'azione "nuovo messaggio aperto" ad un evento un'etichetta click .
  2. Stilizzazione dell'etichetta in modo che appaia esattamente come un collegamento ipertestuale WPF predefinito.

risposta

19

Se si desidera che lo stile sia come un collegamento ipertestuale, perché non utilizzarne uno direttamente?

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

Quindi aggiungere:

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

Grazie. Per qualche motivo avevo l'impressione che la proprietà NavigateUri non sapesse come gestire un mailto, ma evidentemente non è il caso. – user3342256

+0

Cosa succede se il 'Subject' o' Body' contiene la stringa '&'? – iamCR

2

Si può fare questo interamente in XAML interazioni usare l'espressione di chiamare il link di cui sopra

xmlns: i = "http://schemas.microsoft .com/espressione/2010/interattività "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

Dove sono gli spazi dei nomi utilizzati ?. cos'è 'ei'? –

+1

Assicurati di aver installato Blend, o ti imbatterai in problemi con questo. Se manca, eseguilo dalla console di Gestione pacchetti: 'Install-Package Blend.Interctivity.WPF.v4.0' – Alex

+0

Viene visualizzato il messaggio di errore" non esiste nello spazio dei nomi XML xmlns: i = "http : //schemas.microsoft.com/expression/2010/interactivity". – matsolof

Problemi correlati