【问题标题】:How to get HyperLink Text from C# in WPF?如何在 WPF 中从 C# 获取超链接文本?
【发布时间】:2013-11-07 20:01:09
【问题描述】:

我有一个 WPF Hyperlink 我正在尝试从中获取文本内容。

例如:

<Hyperlink Command="{Binding CustomersCommand}" Name="HLCustomers">
    Customers
</Hyperlink>

使用访问Text 属性的通常方式或使用VisualTreeHelper 获取某些子文本元素是不可能的,因为Hyperlink 不是可视元素。我试图从FirstInline 获取文本,但这也没有给我文本。

如何在运行时从上述示例中的Hyperlink 元素中获取值“Customers”?

【问题讨论】:

标签: c# wpf


【解决方案1】:

添加文本块有问题吗?

<Hyperlink Command="{Binding CustomersCommand}" Name="HLCustomers">
    <TextBlock Name="HLCustomersContent">
        Customers
    </TextBlock>
</Hyperlink>

那么您可以将其引用为:

var text = HLCustomersContent.Text;

WPF 超链接对象上的 .Text 属性设置为内部,因此除非您覆盖它并公开 text 属性,否则它并不像您希望的那样容易访问。

【讨论】:

    【解决方案2】:

    只需将TextBlock 放入其中即可享受其绑定灵活性。

    如果它仍然不是您的选择 - 使用 Run.Text 属性,这是非常适合 Hyperlink 的解决方案

    【讨论】:

    • 但是都是一样的,怎么获取文本呢?
    【解决方案3】:

    如果您确实需要获取Hyperlink 中包含的文本,您可以深入挖掘它公开的Inlines 属性并获取它。

    var run = HLCustomers.Inlines.FirstOrDefault() as Run;
    string text = run == null ? string.Empty : run.Text;
    

    请注意,这仅在您的Hyperlink 中的第一个内联确实是Run 时才有效。您可以使用此示例解决更复杂的情况。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-01-26
      • 2023-03-22
      • 2011-08-22
      • 1970-01-01
      • 2010-10-20
      • 2016-08-26
      • 1970-01-01
      相关资源
      最近更新 更多