可以如下嘗試轉換,
<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>
轉換器,
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();
}
}
更新 在這種情況下,你可以使用簡單的行爲,
<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;
};
}
}
您需要引用System.Windows.Interactivity大會
是的,我已經嘗試過,但打開默認郵件客戶端的功能缺失。將NavigateUri設置爲「mailto:[email protected]」不會自動實現打開郵件客戶端的功能。 – user1702369
@ user1702369看我的更新 – WPFUser
多數民衆贊成它,非常感謝。 Excatly我想要的。 – user1702369