尝试在TextBlock中内联HyperLinkBut​​ton

时间:2012-10-19 04:55:39

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

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

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

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

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

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