4

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

例如:

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

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

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

4

3 回答 3

6

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

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

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

于 2013-10-28T21:26:56.260 回答
1

只需放入TextBlock内部即可享受其装订灵活性。

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

于 2013-10-28T21:12:27.237 回答
1

添加文本块有问题吗?

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

然后您可以将其引用为:

var text = HLCustomersContent.Text;

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

于 2013-10-28T21:47:02.487 回答