You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WPF中修改Control Template内嵌TextBlock的Text值遇Null错误求助

解决WPF中ControlTemplate内TextBlock无法修改的问题

问题原因

你当前代码里用this.Template.FindName("txtBlk", this)查找控件,这里的this是Window实例,但你的ControlTemplate是应用在Button控件上的,Window并没有使用这个模板,所以找不到目标TextBlock,返回null导致报错。

修复方案

点击事件中,应该从触发事件的Button(也就是sender参数)中查找模板内的控件,修改后的C#代码如下:

private void panelBtn_Click(object sender, RoutedEventArgs e)
{
    // 将sender转换为Button实例
    var targetBtn = sender as Button;
    if (targetBtn == null) return;
    
    // 通过Button的Template查找TextBlock
    var text = (TextBlock)targetBtn.Template.FindName("txtBlk", targetBtn);
    if (text != null)
    {
        text.Text = txtBox.Text;
    }
}

额外说明

  • 加入null判断可以避免后续潜在的空引用异常,让代码更健壮。
  • 确保你的Button确实应用了这个名为panel的ControlTemplate,比如Button的XAML要设置Template="{StaticResource panel}"。

内容的提问来源于stack exchange,提问作者Bradley Deans

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 08:50:27