5

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?

1

3 Answers 3

7

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.

Sign up to request clarification or add additional context in comments.

Comments

1

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

1 Comment

But is the same, How to get the text?
1

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.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.