• 使用一个Button,通过绑定值转换来给Button确定使用两个不同的样式其中一个。这两个样式都是自己编写的Button样式,其中有一个Button样式(简称样式A)中嵌入了一个CheckBox,并Binding了自己写的CheckBox样式。

最开始发现,在使用wrap的ButtonBase.Click时,获得e.OriginalSource是CheckBox,而不是我定义的Button样式,无法获得Button样式的Name属性,查找获得父控件的Parent直接定位到最外层的Grid控件。网上找不到相似的例子后,通过输入联想,发现了TemplatedParent,尝试后正好能成功

另外不知道CommandParameter是啥

 

 

后来补充:

虽然这个办法最后还是成功获取了Button的name属性

但后来想起没解决前和同事聊的内容,虽然那是没有解决办法,但让我意识到一个事情:

样式的目的是为了在利用控件特性的同时,丰富控件的显示或功能(在控件样式中使用的主要是image或text等显示相关控件),而不是创造一种新功能的控件或者说是结合两种控件(如把checkbox嵌在targettype为button的控件中,让button控件获得checkbox的功能/属性)

因此直接把Button样式全改为Checkbox样式

 

即可直接获得name属性

 

 

 所以虽然可以将两种控件结合嵌套,但我觉得我最开始的出发点错了,以后注意慢慢从控件本身特点出发解决,而不是想着杂糅。除非一定要用到。

 

 而且杂糅本身有很多麻烦的地方,例如我最开始的思路,Button中的CheckBox之所以要绑一个自己写的样式,就是因为Button的ControlTemplate里面是没有isCheck的属性,因此没有isCheck的Trigger

(自己写的checkbox样式)

 

posted on 2021-12-27 14:26  rin_riceroll  阅读(113)  评论(0编辑  收藏  举报