Windows Phone 7 Button修改前景色和背景色的问题和解决办法
2011-03-09 19:09
721 查看
转载地址:http://www.gwewe.com/dev/featured/1101061642.html
今天有朋友问我怎么在Button点击的时候修改它的前景色和背景色,自己觉得这个问题挺简单的,就写了两行代码,放到了按钮的点击事件响应行数中,代码如下:
界面截个图,直观些:
编译执行后,按钮的颜色没有变化,感觉非常奇怪。于是查看MSDN的帮助文档,把控件更新相关的方法也胡乱试了一通,居然都没有效果。郁闷了,觉得奇怪,把代码直接复制到构造函数的下面了:
补充一句,默认情况下Button是黑色背景,白色前景。
编译执行后,按钮颜色变了!这说明在代码中操作Background和Foreground这两个属性也没问题啊。
想不通了,我再加个按钮试试吧,于是又增加个button2,在button2的点击操作中做同样的操作,也是改变button1的前景色和背景色。
问题出现了:
1.如果先点击Button1,还是没有任何变化,再点击Button2,Button1也没有变化。
2.如果先点击Button2,Button1的前景色和背景色就变了。
3.我又试了Button2点击响应函数中改变自己颜色,没有效果。
截图如下:
我有点晕了,为什么呢?不过似乎找到了点规律,就是按钮在其自身的点击响应函数中,修改不了自身的前景色和背景色。
没想明白,再增加一个按钮试试吧。这回策略变一下,在每个按钮的响应函数中,修改另外两个按钮的颜色。
又找到了规律:
1.第一次点击某一个按钮,例如Button1,修改另外两个按钮的前景色和背景色,都正常能修改。如图:
2.第二次点击另一个按钮,例如Button2,第一次点击过的按钮颜色不会变。如图:
3.只要点击过的按钮,颜色就无法改变了。
我想不明白了,为什么只要点击过的按钮,颜色就修改不了了呢?
我又用Silverlight程序试了一下,在SL中没这个问题,只有在WP7中这个问题存在。
如果真的有这样的需求,给大家几个建议:
1.用Blend编辑好按钮各个状态的颜色,例如按下和正常状态的颜色,不在代码里动态改变了。
2.把按钮设置为透明,后面放个Border,这样做能改背景色,但前景色就无能为力了。
3.用Image或其它控件代替Button,这样可能会麻烦一些。
如果大家有好的解决办法,请在下面留言,非常感谢。
特别感谢:MagicBoy110同学跟我讨论并验证该问题。
示例源代码
今天有朋友问我怎么在Button点击的时候修改它的前景色和背景色,自己觉得这个问题挺简单的,就写了两行代码,放到了按钮的点击事件响应行数中,代码如下:
private void button1_Click( object sender, RoutedEventArgs e) |
{ |
button1.Background = new SolidColorBrush(Colors.Blue); |
button1.Foreground = new SolidColorBrush(Colors.Red); |
} |
编译执行后,按钮的颜色没有变化,感觉非常奇怪。于是查看MSDN的帮助文档,把控件更新相关的方法也胡乱试了一通,居然都没有效果。郁闷了,觉得奇怪,把代码直接复制到构造函数的下面了:
public MainPage() |
{ |
InitializeComponent(); |
button1.Background = new SolidColorBrush(Colors.Blue); |
button1.Foreground = new SolidColorBrush(Colors.Red); |
} |
编译执行后,按钮颜色变了!这说明在代码中操作Background和Foreground这两个属性也没问题啊。
想不通了,我再加个按钮试试吧,于是又增加个button2,在button2的点击操作中做同样的操作,也是改变button1的前景色和背景色。
问题出现了:
1.如果先点击Button1,还是没有任何变化,再点击Button2,Button1也没有变化。
2.如果先点击Button2,Button1的前景色和背景色就变了。
3.我又试了Button2点击响应函数中改变自己颜色,没有效果。
截图如下:
我有点晕了,为什么呢?不过似乎找到了点规律,就是按钮在其自身的点击响应函数中,修改不了自身的前景色和背景色。
没想明白,再增加一个按钮试试吧。这回策略变一下,在每个按钮的响应函数中,修改另外两个按钮的颜色。
又找到了规律:
1.第一次点击某一个按钮,例如Button1,修改另外两个按钮的前景色和背景色,都正常能修改。如图:
2.第二次点击另一个按钮,例如Button2,第一次点击过的按钮颜色不会变。如图:
3.只要点击过的按钮,颜色就无法改变了。
我想不明白了,为什么只要点击过的按钮,颜色就修改不了了呢?
我又用Silverlight程序试了一下,在SL中没这个问题,只有在WP7中这个问题存在。
如果真的有这样的需求,给大家几个建议:
1.用Blend编辑好按钮各个状态的颜色,例如按下和正常状态的颜色,不在代码里动态改变了。
2.把按钮设置为透明,后面放个Border,这样做能改背景色,但前景色就无能为力了。
3.用Image或其它控件代替Button,这样可能会麻烦一些。
如果大家有好的解决办法,请在下面留言,非常感谢。
特别感谢:MagicBoy110同学跟我讨论并验证该问题。
示例源代码
相关文章推荐
- Windows Phone 7 Button修改前景色和背景色的问题和解决办法
- Windows Phone 7 Button修改前景色和背景色的问题和解决办法
- Windows Phone 7 学习志(常见问题一:不能直接修改按钮Button背景色或前景色)
- xp+IIS6 access数据库只能读不能修改的问题原因及解决办法
- linux 主机名被修改成bogon问题的几种解决办法
- EF 修改实体关系时,报added状态错误问题解决办法
- 【ZYNQ LINUX】使用问题04 ubuntu12 环境变量修改错误,不能进入root 修改的解决办法
- 修改navigationItem.backBarButtonItem.title的值无效的解决办法
- 频繁修改UIButton的文字引起的频闪问题解决办法
- WINDCHILL项目模板导出压缩包后修改里面的配置文件,然后再压缩导不进去的问题解决办法
- Linux下修改配置文件导致系统无法启动问题解决办法
- jspsmartupload乱码问题(修改源码的解决办法)
- 转:WIN7上搭建Windows Phone 8 开发环境——VMware Workstation下Win8 “无法安装Hyper-V, 某个虚拟机监控程序正在运行”问题解决的办法
- 解决克隆 centos虚拟机后修改克隆后的机器的ip、mac、uuid失败的问题 参考 解决办法
- python笨办法解决zipfile解压会改变文件最后修改时间的问题
- html文件修改后缀为aspx之后在ie6中格式显示不正确问题的解决办法
- Android setButtonDrawable()的兼容问题解决办法
- IDEA修改JSP页面需要重新发布的问题解决办法
- Ubuntu修改环境变量关掉终端就没了,问题解决办法
- persistence.xml配置文件修改存放路径问题的解决办法