Как получить текст из ButtonContent с сеткой в ​​нем - PullRequest
0 голосов
/ 26 сентября 2018

Я хочу получить свой код за содержимым кнопки, в которой есть сетка с несколькими текстовыми полями.

У меня было это до кода, и это работает:

XAML:

 <Button Click="btnClick_upload_Data">
                            <Button.Content>
                            <StackPanel  Orientation="Horizontal">
                                <TextBlock Text="test1" ></TextBlock>
                                <TextBlock Text="test2" ></TextBlock>
                            </StackPanel>
                            </Button.Content>
 </Button>

codebehind:

private void btnClick_upload_Data(object sender, RoutedEventArgs e)
    {

        string s = ((((sender as Button).Content) as StackPanel).Children[1] as TextBlock).Text; 
//…

и таким образом я получил "test2" в моей строковой переменной.

теперь мой XAML немного изменился

мой вопрос: как мне изменить свою функцию, чтобы я по-прежнему получал «test2» в моей строковой переменной 's'

new XAML:

<Button Click="btnClick_upload_Data" >
                            <Button.Content>
                            <StackPanel  Orientation="Horizontal">
                                <Grid>
                                    <Grid.RowDefinitions>
                                        <RowDefinition></RowDefinition>
                                        <RowDefinition></RowDefinition>
                                    </Grid.RowDefinitions>


                                <TextBlock Text="test1" Grid.Row="0"></TextBlock>
                                <TextBlock Text="test2" Grid.Row="1"></TextBlock>
                                </Grid>
                            </StackPanel>
                        </Button.Content>
                        </Button>

новый XAML:

private void btnClick_upload_Data(object sender, RoutedEventArgs e)
{
  //????

заранее спасибо

1 Ответ

0 голосов
/ 26 сентября 2018

Попробуйте это:

private void btnClick_upload_Data(object sender, RoutedEventArgs e)
{
    string s = null;
    Button btn = (Button)sender;
    StackPanel sp = btn.Content as StackPanel;
    if (sp != null && sp.Children.Count > 0)
    {
        Grid grid = sp.Children[0] as Grid;
        if (grid != null && grid.Children.Count > 1)
        {
            TextBlock textBlock = grid.Children[1] as TextBlock;
            if (textBlock != null)
                s = textBlock.Text;
        }
    }
    MessageBox.Show(s);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...