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

如何将字符串作为TextBlock对象的名称获取对应控件实例?

问题原因

你当前的写法存在两个错误:

  1. MainWindow是窗口类名,不是已经实例化的窗口对象,不能直接作为方法调用
  2. WPF没有提供直接传入控件名称字符串就返回控件实例的类调用方法,需要通过名称查找接口实现

修复方案

如果你是在MainWindow的后台代码(.xaml.cs)中编写逻辑,直接使用当前窗口实例的FindName方法即可:

var r = Int32.Parse(row.Text)-1;
var c = Int32.Parse(column.Text)-1;
var cellValue = "_" + Convert.ToString(r) + Convert.ToString(c);
var cell = (TextBlock)this.FindName(cellValue);

如果是在其他类中调用,需要先获取MainWindow的运行实例:

var mainWindow = Application.Current.MainWindow as MainWindow;
var cell = (TextBlock)mainWindow?.FindName(cellValue);

注意事项

  • 所有TextBlock必须在XAML中通过x:Name属性声明为你拼接的_xx格式名称,且属于MainWindow的视觉树范围内,FindName才能正常检索到
  • 建议添加非空判断,避免行号/列号输入非法、对应控件不存在导致空引用异常:
if (cell == null)
{
    // 自定义不存在时的处理逻辑,比如提示输入错误
    return;
}
// 后续操作cell的逻辑

内容的提问来源于stack exchange,提问作者Anirudh Singh Rawat

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 05:15:03