WPF中是否需要基于`ListBox`的自定义`RadioButtonList`?

AMi*_*ico 10 wpf radiobuttonlist custom-controls

我继承了一个使用RadioButtonList继承自a的项目ListBox.它被取消了(目前找不到链接),并包含RadioButtonList.cs(包含六个依赖属性)和RadioButtonList.xaml(它只是样式和控件模板).

这种控制在一百多个地方使用.它会导致问题,因为它不是一个完整和专业的控制.问题,如焦点问题,键盘导航等.(看评论.)

经过过去几年不同时间的大量研究,似乎这种控制确实没有必要.所需要的只是GroupName在一组单选按钮上设置属性.并且,RadioButtonList使用控件的唯一原因是通过继承来帮助数据绑定选项列表ListBox.

1)这种控制真的有必要吗?有没有更好的办法?

2)是否有专业控制,开源或其他方式,这将使我能够在没有头痛的情况下获得数据绑定的好处?(我们使用Infragistics和DevExpress,但我不熟悉这些套件提供的所有控件.)

我的答案

1a)这种控制真的有必要吗?

  • 如果您只需要一个单选按钮列表,则不需要此控件.
  • 如果您的应用程序使用了许多单选按钮列表,那么这个控件是必要的.
  • 如果您在不同的应用程序中使用单选按钮列表,则可能需要此控件.

1b)有更好的方法吗?

  • 我说,从a ListBox,ItemsControl或者其他任何东西来创建样式和模板是创建这个控件的唯一方法; 因此,没有更好的方法.

2)是否有专业控制......

  • 绝对是,ListBoxEditRadioListBoxEditStyleSettings.

关于答案的评论

所有答案都表明RadioButtonList不需要创建控件.但是,如果您需要多个单选按钮列表,那么在创建样式和控件模板以及数据模板时,您最终会得到一组代码工件,可称为单选按钮列表 - 控制.因此,在我看来,a RadioButtonList是必要的.

而且,我的理解是RadioButtonList在早期的WPF CTP中被删除了.我可以理解,因为对这种易于创建的控件的需求有限.

关于公认答案的评论

2)是否有专业控制......

  • 绝对是,ListBoxEditRadioListBoxEditStyleSettings.

最后评论Mike Strobel的答案

RadioButtonList我已经是他的答案的最终结果.虽然我擅长创建自定义控件,但我宁愿让第三方组件制造商(如Infragistics和DevExpress)创建和支持像这样的基本控件.

Jeh*_*hof 1

我只能告诉你DevExpress使用aListBoxEdit和aRadioListBoxEditStyleSettings来表示一组RadioButtons。实际上,它与您正在使用的控件相同,但我认为它提供了更好的功能并且经过了良好的测试。DevExpress 不提供 RadioButton,在我的应用程序中,我使用 WPF/Silverlight 提供的默认 RadionButton-Control。

您使用DevExpress的RadioListBoxEdit如下:

<dxe:ListBoxEdit SelectedItem={Binding CheckItem, Mode=TwoWay}>
  <dxe:ListBoxEdit.StyleSettings>
    <dxe:RadioListBoxEditStyleSettings />
  </dxe:ListBoxEdit.StyleSettings>
</dxe:ListBoxEdit>
Run Code Online (Sandbox Code Playgroud)

关于 DevExpress 的 ListBoxEdit 的更多信息可以在这里找到