Как получить текст TextBlock (TextBlock - содержимое кнопки)

TextBlock находится внутри Button как content,

Я хочу Text собственность TextBlock, Пожалуйста, дайте совет, как я могу решить это.

Ниже код только возврат ct как System.Windows.Controls.TextBlock

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

Конечно, Content из Button действительно TextBlockSystem.Windows.Controls.TextBlock
Я нашел очень похожий случай в stackru, но люди предоставили только неправильный ответ.

2 ответа

Решение

Так как Content из Button является TextBlock вы должны рассмотреть (sender as Button).Content как TextBlock затем используйте Text свойство как это:

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

Есть несколько способов решить вашу проблему. Первый только что брошен 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;

Второй вы можете найти свой TextBlock по имени или просто укажите его, если у вас есть обработчик событий в том же элементе управления:

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

var ct = textblock.Text;

Также вы можете попробовать изменить свой XAML-код, чтобы сохранить только текст в вашей кнопке:

<Button Content="YourText" Backround="..." Foreground="..." Style="..." />
Другие вопросы по тегам