Sie Converter versuchen können, wie unten,
<TextBlock Grid.Column="3"
HorizontalAlignment="Left"
VerticalAlignment="Center">
<TextBlock.Resources>
<local:StringToMailToConverer x:Key="StringToMailToConverer" />
</TextBlock.Resources>
<Hyperlink NavigateUri="{Binding Email, Converter={StaticResource StringToMailToConverer}}">
<Run Text="{Binding Email}" />
</Hyperlink>
</TextBlock>
Konverter,
public class StringToMailToConverer : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if(value != null)
{
if (!string.IsNullOrEmpty(value.ToString()))
{
return "mailto:" + value.ToString();
}
}
return string.Empty;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
aktualisieren In diesem Fall können Sie verwenden einfaches Verhalten,
<TextBlock xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
Grid.Column="3"
HorizontalAlignment="Left"
VerticalAlignment="Center">
<Hyperlink NavigateUri="{Binding Email}">
<i:Interaction.Behaviors>
<local:MailToBehaviour />
</i:Interaction.Behaviors>
<Run Text="{Binding Email}" />
</Hyperlink>
</TextBlock>
public class MailToBehaviour : Behavior<Hyperlink>
{
protected override void OnAttached()
{
base.OnAttached();
AssociatedObject.RequestNavigate += (_, __) =>
{
Process.Start("mailto:" + __.Uri);
__.Handled = true;
};
}
}
müssen Sie beziehen System.Windows.Interactivity Assembly
Ja, ich habe es versucht, aber die Funktionalität des Öffnens der Standard-Mail-Client fehlt. Wenn Sie NavigateUri auf "mailto: [email protected]" festlegen, wird die Funktionalität zum Öffnen des Mail-Clients nicht automatisch implementiert. – user1702369
@ user1702369 sehe mein Update – WPFUser
Das ist es, vielen Dank. Genau was ich wollte. – user1702369