2016-02-12 80 views
1

a TextBlockButton内部为content如何获取TextBlock的文本(TextBlock是Button的内容)

我想Text财产的TextBlock。请善意建议我如何解决这个问题。

下面的代码只返回ctSystem.Windows.Controls.TextBlock

string ct = (sender as Button).Content.ToString(); 

当然的ButtonContent真是TextBlockSystem.Windows.Controls.TextBlock
我在计算器发现非常类似的事例,但人们只提供了错误的答案。

+2

你试过'字符串克拉=((发件人为按钮)。内容为TextBlock的).Conte nt;'? – ericosg

+1

@ericosg,你是第一个提交正确答案的人。我诚挚地感谢所有提供出色,正确答案的人。我很遗憾你只写评论而不是回答..非常感谢你! –

回答

2

由于ButtonContentTextBlock你应该考虑(sender as Button).ContentTextBlock然后使用Text属性是这样的:

string ct = ((sender as Button).Content as TextBlock).Text; 
+1

非常感谢你的优秀,善良。所有3人都给我带来了正确的答案。祝您有个舒适的日子! –

2

有解决你的问题几个方面。第一种是只投Button内容和获取文本:

var button = (sender as Button); 
if(button == null) 
{ 
    // handle this scenario 
} 

var textBlockContent = button.Content as TextBlock; 
if(textBlockContent == null) 
{ 
    // handle this scenario 
} 

var ct = textBlockContent.Text; 

第二个你可以找到你TextBlockby name或只是参考,如果你有事件处理程序在同一控制:

var textblock = (TextBlock)this.FindName("YourTextBlockName"); 
if(textblock == null) 
{ 
    // handle this scenario 
} 

var ct = textblock.Text; 

而且你可以试着改变你的XAML代码只是一个文本存储在您的按钮:

<Button Content="YourText" Backround="..." Foreground="..." Style="..." /> 
+0

非常感谢您的出色善良。所有3人都给我带来了正确的答案。祝您有个舒适的日子! –