【问题标题】:Trying to inline a HyperLinkButton in a TextBlock尝试在 TextBlock 中内联 HyperLinkBut​​ton
【发布时间】:2012-10-19 04:55:39
【问题描述】:

我正在向 TextBlock 添加内联。 Run() 内联工作。当然,由于某种原因,Windows 8 中不推荐使用 Hyperlink()(使用 Windows.UI.Xaml.Documents),所以我尝试使用 C# 将 HyperlinkBut​​ton 封装在 InlineUIContainer 中。我知道这个概念是合理的,但我的代码失败了。

如果我注释掉“使用 Windows.UI.Xaml.Documents;”这一行然后我让两个周围的内联显示在我的 ListView 中(它使用下面的方法。)如果未注释此行,则 Inlines.Add for 'link' 正在抛出。我做错了什么?

    public TextBlock enrichPostText(anFullPost post)
    {
        TextBlock text_block = new TextBlock();
        text_block.Inlines.Clear();
        var holdText = new Run();
        holdText.Text = "Test start >> ";
        text_block.Inlines.Add(holdText);

        HyperlinkButton linkButton = new HyperlinkButton();
        linkButton.NavigateUri = new Uri("http://www.cones.net");
        linkButton.Content = "click me";
        linkButton.Name = "_blank";

        InlineUIContainer link = new InlineUIContainer();
        link.Child = linkButton;

        text_block.Inlines.Add(link);

        var holdText2 = new Run();
        holdText2.Text = " << end test.";
        text_block.Inlines.Add(holdText2);

        return (text_block);
    }

【问题讨论】:

  • 注意:如果我注释掉这一行:text_block.Inlines.Add(link);然后其他内联工作,我可以看到 ListViewItems。
  • 我收到以下错误:WinRT 信息:E_NETWORK_ERROR

标签: c# windows-8 microsoft-metro inlines


【解决方案1】:

刚刚在 MSDN 上发现了这个,这可能会有所帮助。显然 TextBlock 内容模型不支持 InlineUIContainers 所以它会抛出异常。 http://social.msdn.microsoft.com/Forums/en-US/winappswithcsharp/thread/96585db1-8ed4-4a12-8d63-b427dc0d543d/

【讨论】:

    【解决方案2】:

    我刚刚尝试将我的RichTextBlock 更改为TextBlock,当我尝试添加InlineUIContainer 时,我还看到ArgumentException 被抛出。我知道的唯一解决方案是改用RichTextBlock;到目前为止,它一直满足我的需求。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多