我有一个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
。
答案 0 :(得分:2)
Button
的内容存储在Content
属性中,在您的情况下,TextBlock
是Button
的内容。
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>