如何在 WPF 中从 C# 获取超链接文本
本文关键字:获取 超链接 文本 中从 WPF | 更新日期: 2023-09-27 18:37:23
我有一个WPF Hyperlink
,我正在尝试从中获取文本内容。
例如:
<Hyperlink Command="{Binding CustomersCommand}" Name="HLCustomers">
Customers
</Hyperlink>
使用访问 Text
属性或使用 VisualTreeHelper
获取某些子文本元素的常规方式无法做到这一点,因为Hyperlink
不是可视元素。我试图从FirstInline
那里获取文本,但这也没有给我文本。
如何在运行时从上述示例中的 Hyperlink
元素获取值"客户"?
如果你真的需要获取包含在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 属性,否则它不像您希望的那样容易访问。