如何在Xaml中的文本中包含电子邮件链接?

Tak*_*ais 3 c# xaml windows-phone windows-phone-8

我在Windows Phone 8应用程序中有一些大文本,我希望里面有电子邮件链接,类似于mailto功能.这是代码的一部分:

<phone:PivotItem Header="???? ???">
    <ScrollViewer>
        <StackPanel>
            <TextBlock TextWrapping="Wrap">                     
            <Run Text="John Doe"/>
            <LineBreak/>
            <Run Text="503 (Building DS 126)"/>
            <LineBreak/>
            <Run Text="tel.:  +30 210-1234567"/>
            <LineBreak/>
            <Run Text="e-mail:  johndoe@uni.gr"/>
            </TextBlock>
        </StackPanel>
    </ScrollViewer>
</phone:PivotItem>
Run Code Online (Sandbox Code Playgroud)

我希望"电子邮件:johndoe@uni.gr"可以点击并打开手机上的邮件应用程序.在我的代码中有很多类似的情况,电子邮件的文本更大,这就是我使用<TextBlock><Run Text=".."/><LineBreak/>...格式的原因.

现在我知道我不能在里面使用超链接按钮<Run Text=".."/>所以有什么建议吗?

Gar*_*son 10

如果你想在你的UI中使用超链接,HyperlinkBut​​ton是好的,但是如果你想在一系列文本中嵌入超链接,你应该使用带有超链接的RichTextBox:

<RichTextBox TextWrapping="Wrap">
    <Paragraph>
        <Run Text="John Doe" />
        <LineBreak />
        <Run Text="503 (Building DS 126)" />
        <LineBreak />
        <Run Text="tel.:  +30 210-1234567" />
        <LineBreak />
        <Hyperlink Click="Hyperlink_OnClick">e-mail:   johndoe@uni.gr</Hyperlink>
    </Paragraph>
</RichTextBox>
Run Code Online (Sandbox Code Playgroud)

然后使用Julien的答案中的处理程序:

    private void Hyperlink_OnClick(object sender, RoutedEventArgs e) {
        EmailComposeTask emailComposeTask = new EmailComposeTask();
        emailComposeTask.Subject = "message subject";
        emailComposeTask.Body = "message body";
        emailComposeTask.To = "johndoe@uni.gr";
        emailComposeTask.Show();
    }
Run Code Online (Sandbox Code Playgroud)

祝好运!