目的:想让一个自定义按钮的鼠标IsMouseOver事件触发时,按钮的背景色根据自己一个属性(bool类型)表现出不同的颜色;
第一种写法:使用TemplateBinding,因为我看其他地方可以使用TemplateBinding绑定自己的属性:
就模仿绑定了自己定义的依赖属性:
这是样式写法:
运行中报错:
看起来像是这个属性类型不兼容(绑定关系:backcolor = 绑定 bool ,常理来说应该绑定的是一个颜色值);
第二种写法:使用Binding直接绑定依赖属性:
运行,毫无疑问又报错了:
分析一下:
DownloadsidebarViewModel 是我的VM类,上面使用了这个自定义按钮控件,提示问题就是这个VM类上缺少IsPanelVisible属性,这里明白了一点:
分清楚是Binding还是TemplateBinding,Binding是绑ViewModel,TemplateBinding是绑自己
上面一句话不保证正确,没有深入学习研究,只是个人经验。
然后把属性添加进去:
成功运行,达到效果,但是想一下这样的话我只有有用到这个按钮,都要在VM类里面添加这个bool属性,就算我不用这个IsMouseOver事件也要加上,属实有点不合理。
又去搜索其他写法.....
最终写法:
适配到我这里来就是这样写:
属实长了点,分行处理 ;
展示一下效果,想做动图有点麻烦也没有现成的动图软件,如果你有好用的推荐一下感激不尽:
这么糊啊,不过效果可以看出来,最左边两列侧边栏,鼠标滑过时前景色一样,背景色不一样,最外边是透明的。