2013-10-28 51 views
4

我有一个WPF Hyperlink,我试图从中获取文本内容。如何从WPF中的C#获取超链接文本?

例如:

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

此使用访问Text属性或使用VisualTreeHelper得到一些子文本元件的通常的方式,由于Hyperlink是不可视元素是不可能的。我试图从FirstInline获得文本,但这也不会给我的文字。

我怎么会得到来自Hyperlink元素的值“客户”在运行时,上面的例子吗?

+0

是否使用CommandParameter =“客户”为您工作?或绑定到控制。 http://stackoverflow.com/questions/12413985/binding-a-wpf-button-commandparameter-to-the-button-itself-in-datatemplate – kenny

+2

这是一个不应该被关闭的好问题。 – codekaizen

+0

不知道为什么这是“关闭”。绝对是一个有效的问题。 –

回答

5

完全适合的解决方案。如果你真的需要得到包含Hyperlink内的文字,你可以挖掘到它暴露了Inlines财产并得到它。

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

请注意,如果你Hyperlink第一共线的确是Run这只会工作。对于更复杂的情况,你可以用这个例子来讨论。

+0

非常感谢Tejas Sharma – Ed1085

+0

不客气!我很高兴它有帮助。 –

+0

它不适合我。 –

1

只需放入一个TextBlock并享受其绑定的灵活性。

如果它仍然不是一个选项,您 - 使用Run.Text财产是Hyperlink

+0

但是是一样的,如何获取文本? – Ed1085

1

添加文本块是否有问题?

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

然后你可以只引用它为:

var text = HLCustomersContent.Text; 

一个WPF超链接对象上的.Text属性设置为内部,所以,除非你推翻它,暴露了text属性,它并不像就像你可能会喜欢的那样容易访问。