使用C#在Windows Phone 8.0中的TextBlock中的超链接

时间:2014-07-17 10:03:27

标签: c# windows-phone-8 windows-phone-8.1

如何使用C#

从Windows Phone 8.0中的文本框中写入文本到文本块中生成超链接

ex: - 我输入了

www.google.com在文本框中,点击按钮后点击按钮

结果应该是

www.google.com
使用文本块中的超链接

4 个答案:

答案 0 :(得分:2)

您可以轻松地将Hyperlink放入RichTextBlock(在 WP8.1运行时中)。我还将Run放在超链接中,以便更容易管理其内容。例如:

<StackPanel>
  <TextBox Name="myTextBox" Width="200"/>
  <RichTextBlock TextWrapping="Wrap" VerticalAlignment="Center" TextAlignment="Center">
    <Paragraph>
        <Run Text="This is a link to google:"/>
        <LineBreak/>
        <Hyperlink x:Name="myhyperlink" Click="myhyperlink_Click">
            <Run x:Name="hyperText" Text="textInside"/>
        </Hyperlink>
        <LineBreak/>
        <Run Text="you can click it to invoke doEvent in your code."/>
    </Paragraph>
  </RichTextBlock>
</StackPanel>

在后面的代码中 - 一些逻辑示例:

public MainPage()
{
   this.InitializeComponent();
   myTextBox.TextChanged += (sender, e) => hyperText.Text = myTextBox.Text;
}

private async void myhyperlink_Click(Windows.UI.Xaml.Documents.Hyperlink sender, Windows.UI.Xaml.Documents.HyperlinkClickEventArgs args)
{
  await Windows.System.Launcher.LaunchUriAsync(new Uri(@"http://" + myTextBox.Text));
}

请注意,在 WP8.0 WP8.1 Silverlight 中,您必须IsReadOnly = true使用{{1}}

答案 1 :(得分:1)

使用HyperlinkButton控件。

<HyperlinkButton NavigateUri="http://www.google.com">
            <HyperlinkButton.Content>
                   <TextBlock Text="google.com" />
            </HyperlinkButton.Content>
</HyperlinkButton>

答案 2 :(得分:0)

试试这个:

XAML:

<Grid x:Name="ContentPanel" Grid.Row="1" Margin="0">
    <StackPanel x:Name="stack">
        <TextBox x:Name="txtInput"></TextBox>
        <Button Content="Create Link" Click="Button_Click"/>
    </StackPanel>
</Grid>

CS:

private void Button_Click(object sender, RoutedEventArgs e)
{
    if (txtInput.Text != "")
    {
        HyperlinkButton obj = new HyperlinkButton();
        obj.NavigateUri = new Uri(txtInput.Text,UriKind.RelativeOrAbsolute);
        obj.Content = txtInput.Text;
        obj.TargetName = "_blank";
        this.stack.Children.Add(obj);
    }
}

例如尝试使用文本框中的http://google.com

答案 3 :(得分:0)

试试这个

XAML

 <StackPanel x:Name="stack">
                <TextBlock Text="{Binding LineThree}" TextWrapping="Wrap" Style="{StaticResource PhoneTextNormalStyle}"/>
                <TextBox x:Name="txtInput"></TextBox>
                <Button Content="Create Link" Click="Button_Click"/>
                <RichTextBox x:Name="textBox" ></RichTextBox>
            </StackPanel>

并单击cs文件中的按钮

private void Button_Click(object sender, RoutedEventArgs e)
        {
            Hyperlink hyperlink = new Hyperlink();
            hyperlink.Inlines.Add(txtInput.Text);

            Paragraph myParagraph = new Paragraph();
            myParagraph.Inlines.Add(hyperlink);
            textBox.Blocks.Add(myParagraph);
        }