Ejrr1085
Ejrr1085

Reputation: 1071

How to get HyperLink Text from C# in WPF?

I have a WPF Hyperlink which I'm trying to get the text content from.

For example:

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

This is not possible using the usual manner of accessing a Text property or using VisualTreeHelper to get some child text element, since Hyperlink is not a visual element. I tried to get the text from FirstInline but this also doesn't give me the text.

How would I get the value "Customers" from the Hyperlink element in the above example at runtime?

Upvotes: 5

Views: 6456

Answers (3)

crthompson
crthompson

Reputation: 15875

Is adding a text block a problem?

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

Then you could just reference it as:

var text = HLCustomersContent.Text;

The .Text property on a WPF Hyperlink object is set to internal, so unless you overrode it and exposed the text property, it is not as easily as accessible as you would might like.

Upvotes: 1

Anatolii Gabuza
Anatolii Gabuza

Reputation: 6260

Just put a TextBlock inside and enjoy its binding flexibility .

If it's still not an option for you - use Run.Text property which is perfectly suitable solution for Hyperlink

Upvotes: 1

Tejas Sharma
Tejas Sharma

Reputation: 3440

If you really need to get the text contained within the Hyperlink, you can dig in to the Inlines property it exposes and get it.

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

Note, that this will only work if the first inline in your Hyperlink is indeed a Run. You can finagle with this example for more complex cases.

Upvotes: 7

Related Questions