【问题标题】:Hyperlinks in TextBlock in windows phone 8.0 using C#使用 C# 在 windows phone 8.0 中的 TextBlock 中的超链接
【发布时间】:2014-07-17 10:03:27
【问题描述】:

如何使用 C# 生成从文本框中写入的文本到 windows phone 8.0 中的文本块的超链接

ex:- 我输入了

文本框中的 www.google.com 并在单击按钮后单击按钮

结果应该是

www.google.com
在文本块中带有超链接

【问题讨论】:

  • 我不知道你在问什么。您是尝试使用超链接将您发送到网页,还是只是想在按下按钮后在文本块中显示输入到文本框中的文本?

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


【解决方案1】:

您可以轻松地将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.0WP8.1 Silverlight 中,您必须使用 RichTextBoxIsReadOnly = true

【讨论】:

    【解决方案2】:

    使用HyperlinkButton 控件。

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

    【讨论】:

      【解决方案3】:

      试试这个:

      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

      【讨论】:

        【解决方案4】:

        试试这个

        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);
                }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-10-15
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-12-04
          相关资源
          最近更新 更多