Reputation: 1071
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
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
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
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