2013-10-28 48 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屬性,它並不像就像你可能會喜歡的那樣容易訪問。