如何在 WPF 中从 C# 获取超链接文本

本文关键字:获取 超链接 文本 中从 WPF | 更新日期: 2023-09-27 18:37:23

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

例如:

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

使用访问 Text 属性或使用 VisualTreeHelper 获取某些子文本元素的常规方式无法做到这一点,因为Hyperlink不是可视元素。我试图从FirstInline那里获取文本,但这也没有给我文本。

如何在运行时从上述示例中的 Hyperlink 元素获取值"客户"?

如何在 WPF 中从 C# 获取超链接文本

如果你真的需要获取包含在Hyperlink中的文本,你可以深入研究它公开的Inlines属性并获取它。

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

请注意,仅当Hyperlink中的第一个内联确实是Run时,这才有效。对于更复杂的情况,您可以使用此示例进行微调。

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

如果它仍然不适合您 - 请使用Run.Text非常适合Hyperlink解决方案的房产

添加文本块有问题吗?

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

然后你可以把它引用为:

var text = HLCustomersContent.Text;

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