想设计一个单选按钮在文字上方的radiobutton,但还不怎么明白怎么写wpf的样式。自己写的只有文本没有单选框,看网上的不知道哪个是单选框代码。在看了知道里的一个答案后恍然大悟。单选框需要自己画(用控件或者是图片)。最后选择用border和ellipse来实现单选效果。

目前对于写样式模板的浅显理解就是targettype来决定控件最终属于什么模板,哪种控件能够用,以及包含的方法属性(如click,ischeck,groupname这种)(在controlTemplate.trigger中)。而最终样式的模样可以按需要加各种不同控件(在setter的template中)(也许会有限制,但目前还不清楚),用setter设置整个模板的大框架属性。

但其实还有一点没明白的是,我显示的文字虽然是全的,但在运行后文字的边缘总会有些遮挡,无论怎么该模板里的width都不行。只有手动拉大或者在xmal界面给width值,然后删掉(但width值还是设置的那么宽)。运行才不会有遮挡

最开始想的是弄不出来模板只能radiobutton加button,在button的click函数中改对应的ischeck。

 

参考的知道回答

https://zhidao.baidu.com/question/1668106802647687267.html

 

 

 

 

这个给了我思路radiobutton里是能嵌套的思路,本来准备放弃模板使用<RadioButton><TextBlock/></RadioButton>,但后来看到了上面的回答

 

 https://www.cnblogs.com/Leozi/p/10798576.html

 

 

 

另外使用:

WPF中Border画圆操作

https://blog.csdn.net/qq_45096273/article/details/106057786

 

 

Ellipse.fill实现选中出现小圆点

 

遇到的其它小问题:

textblock文本自适应

 

 

 contentPresenter

https://www.cnblogs.com/zuiyirenjian/archive/2012/08/28/2659688.html

 本来想在ContentPresenter中嵌套textblock,但发现在用eventTrigger无法实现,就直接用textblock了

 

 

 

 

 最后附两个其它比较好看的RadioButton样式

https://blog.csdn.net/q465162770/article/details/106212295

 

 

https://www.cnblogs.com/anding/p/4976559.html

字符对应表https://www.cnblogs.com/lin277541/p/4881382.html

 

 

posted on 2021-12-22 14:06  rin_riceroll  阅读(629)  评论(0编辑  收藏  举报