如何在this.后使用变量?实现TextBlock背景色设为蓝色
解决WPF中通过变量名设置TextBlock背景的问题
你当前代码的问题是:stand是存储TextBlock名称的字符串变量,this.stand这种写法是在访问当前类中名为stand的成员,而不是根据字符串名称查找对应的TextBlock控件。
给你两种解决思路:
方法一:直接使用事件源实例(最简便)
因为触发事件的sender本身就是被点击的TextBlock,直接强转后操作即可,完全不需要通过名称查找:
private void MouseDown_TextBlock(object sender, MouseButtonEventArgs e) { var textBlock = (TextBlock)sender; textBlock.Background = blue; }
方法二:通过控件名称字符串查找(适用于非当前触发控件的场景)
如果确实需要通过名称字符串定位控件,可以使用FindName方法:
private void MouseDown_TextBlock(object sender, MouseButtonEventArgs e) { var stand = ((TextBlock)sender).Name; // 根据名称查找控件 var targetTextBlock = this.FindName(stand) as TextBlock; // 判空避免空引用异常 if(targetTextBlock != null) { targetTextBlock.Background = blue; } }
内容的提问来源于stack exchange,提问作者M.Nasiri
相关产品推荐
相关产品推荐

