【问题标题】:Insert Hyperlink in TextBlock在 TextBlock 中插入超链接
【发布时间】:2011-10-15 19:42:48
【问题描述】:

在 WPF 应用程序中,我从 RSS 提要加载新闻。内容显示在 TextBlock 中。这个 TextBlock 有一定的大小。内容被 TextTrimming 方法截断。

现在我想在每个 TextBlock 的末尾插入一个超链接按钮。唯一的问题是我不知道我的绳子上的确切位置。有没有办法解决这个问题?

当我在 TextBlock 中插入 Text,然后在 Hyperlink-Button 中插入时,我的 HyperlinkBut​​ton 将被剪掉。我可以防止切断我的超链接按钮吗?

XAML 代码:

<TextBlock Name="myText" />

C#-代码:

Hyperlink hlink = new Hyperlink(new Run("here"));

myText.Inlines.Clear();
myText.Inlines.Add(value); //description from RSS Feed
myText.Inlines.Add(hlink);

【问题讨论】:

    标签: c# wpf wpf-controls


    【解决方案1】:

    为什么不直接在文本后添加超链接,通过替换 StackPanel 中的两个项目?

    【讨论】:

    • 文本是双倍行距的。取而代之的是(...)TextTrimming 方法也应该在文本字段的末尾有这个链接按钮。
    • 这没有多大意义。但显然你不能在省略号和文本的其余部分之间插入超链接。相反,您应该修剪文本,添加超链接,并在必要时手动添加省略号。
    • 感谢您的支持。现在的困难是弄清楚我的文本框中可以显示多少文本,因为每个字母的大小可能不同。
    【解决方案2】:

    如果我了解您的要求,这是实现您目标的一种方式:

    <StackPanel>  
        <DockPanel Width="200">
            <TextBlock DockPanel.Dock="Left"  Text="A short description."  TextTrimming="CharacterEllipsis"/>
            <TextBlock DockPanel.Dock="Right" TextAlignment="Right">
                <Hyperlink NavigateUri="http://www.google.com">here</Hyperlink>   
            </TextBlock>
        </DockPanel>
        <DockPanel Width="200">
            <TextBlock DockPanel.Dock="Left" TextTrimming="CharacterEllipsis" MaxWidth="170" Text="A really long descripion of the item." />
            <TextBlock DockPanel.Dock="Right" TextAlignment="Right">
                <Hyperlink NavigateUri="http://www.google.com">here</Hyperlink>   
            </TextBlock>
        </DockPanel>
    </StackPanel>
    

    所以DockPanel 控件可能是一个很好的候选对象。

    【讨论】:

      【解决方案3】:

      稍微方便一点的是使用:

      <TextBlock>
          <Run Text="Short description"/>
          <Hyperlink NavigateUri="http://www.google.com">here</Hyperlink>
      </TextBlock>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-03-24
        • 2017-05-03
        • 2011-08-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-12-04
        相关资源
        最近更新 更多