在Button中获取TextBlock

时间:2017-09-25 19:52:48

标签: c# xaml uwp

我有一个Button,其中嵌入了TextBlock。点击Button后,我希望能够获取其中的TextBlock并修改其成员。

以下是我的按钮设置方式:

<Button Click="Select_Click" Style="{StaticResource ButtonStyle}" HorizontalAlignment="Left" Padding="0,20,20,20">
    <TextBlock Text="My text" FontSize="20" Style="{StaticResource TextBlockStyle}"/>
</Button>

在我的代码中,我希望能够访问嵌入式TextBlock

public void Select_Click(object sender, RoutedEventArgs e)
{
    // Get the `TextBlock` from `sender` here
}

我已经看过Button的可视树,但我没有看到TextBlock。我在GetVisualChildren()上拨打了Button,但我只看到Grid,无法访问Textblock

2 个答案:

答案 0 :(得分:2)

Button的内容存储在Content属性中,在您的情况下,TextBlockButton的内容。

public void Select_Click(object sender, RoutedEventArgs e)
{
    Button button = (Button)sender;
    TextBlock textBlock = (TextBlock)button.Content;
}

答案 1 :(得分:1)

只做一些演员而且非常简单

 public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
        Establish_handlers();
    }

    void Establish_handlers()
    {
        Mybutton.Click += Mybutton_Click;

    }

    private void Mybutton_Click(object sender, RoutedEventArgs e)
    {
        Button clicked_button = (Button)sender;
        TextBlock desired_text = (TextBlock)clicked_button.Content;
        Textbox_Show_Button_Content.Text = desired_text.Text;
    }
}


<StackPanel>
    <Button x:Name="Mybutton">
        <TextBlock>Hello</TextBlock>
    </Button>
    <TextBox x:Name="Textbox_Show_Button_Content"></TextBox>
</StackPanel>