我继承了一个项目,该项目使用RadioButtonList
从 a 继承的 a ListBox
。它是从网上撤下的(目前找不到链接),并包含 RadioButtonList.cs(包含六个依赖属性)和 RadioButtonList.xaml(只是样式和控件模板)。
该控件用于一百多个地方。它会导致问题,因为它不是完整且专业的控件。诸如焦点问题、键盘导航等问题。(看评论。)
经过过去几年不同时间的大量研究,似乎这种控制确实没有必要。所需要的只是GroupName
在一组单选按钮上设置属性。而且,使用控件的唯一原因RadioButtonList
是帮助通过继承的ListBox
.
1)这种控制真的有必要吗?有没有更好的办法?
2)是否有专业的控制,开源或其他方式,可以让我获得数据绑定的好处而不会让人头疼?(我们使用 Infragistics 和 DevExpress,但我不熟悉这些套件提供的所有控件。)
我的答案
1a) 这种控制真的有必要吗?
- 如果您只需要一个单选按钮列表,则不需要此控件。
- 如果您的应用程序使用许多单选按钮列表,那么是的,此控件是必要的。
- 如果您在不同的应用程序中使用单选按钮列表,那么是的,此控件可能是必要的。
1b)有更好的方法吗?
- 我说从 , 或其他任何东西派生
ListBox
然后ItemsControl
创建样式和模板是创建此控件的唯一方法;因此,没有更好的方法。
2)是否有专业的控制...
- 当然,
ListBoxEdit
与RadioListBoxEditStyleSettings
.
关于答案的评论
所有答案都表明RadioButtonList
不需要创建控件。然而,如果您需要多个单选按钮列表,当您创建样式和控件模板以及可能的数据模板时,您最终会得到一组可以称为单选按钮列表的代码工件。控制。因此,在我看来,aRadioButtonList
是必要的。
此外,我的理解是RadioButtonList
在早期的 WPF CTP 中被丢弃。我可以理解,因为对这种可以轻松创建的控件的需求有限。
关于已接受答案的评论
2)是否有专业的控制...
- 当然,
ListBoxEdit
与RadioListBoxEditStyleSettings
.
最后评论 Mike Strobel 的回答
我所RadioButtonList
拥有的是他回答的最终结果。虽然我擅长创建自定义控件,但我宁愿让第三方组件制造商(例如 Infragistics 和 DevExpress)创建和支持像这样的基本控件。