title: Is a custom `RadioButtonList` based on `ListBox` necessary in WPF?
body: <p>I inherited a project that uses a <code>RadioButtonList</code> which inherits from a <code>ListBox</code>. It was taken off the web (currently cannot find a link to), and contains RadioButtonList.cs (which contains six dependency properties) and RadioButtonList.xaml (which is just styles and control templates).</p>
  
  <p>This control is used in over a hundred places. It causes problems because it is not a complete and professional control. Problems such as, focus issues, keyboard navigation, and so on. (See comments.)</p>
  
  <p>After much research at different times over the last couple years, it seems that this control is really not necessary. All that is needed is to set the <code>GroupName</code> property on a group of radio-buttons. And, the only reason why a <code>RadioButtonList</code> control is used is to help with data-binding a list of options through the inherited <code>ListBox</code>.</p>
  
  <p>1) Is this control really necessary? Is there a better way?</p>
  
  <p>2) Is there a professional control, open-source or otherwise, that will allow me to get the benefits of data-binding without the headaches? (We use Infragistics and DevExpress, but I am not familiar with all the controls these suites offer.)</p>
  
  <h3>My Answers</h3>
  
  <p>1a) Is this control really necessary?</p>
  
  <ul>
  <li>If you only need one list of radio buttons, then no this control is not necessary.</li>
  <li>If your applicaton uses many lists of radio buttons, then yes this control is necessary.</li>
  <li>If you use a list of radio buttons in different applications, then yes this control is probably necessary.</li>
  </ul>
  
  <p>1b) Is there a better way?</p>
  
  <ul>
  <li>I say that deriving from a <code>ListBox</code>, <code>ItemsControl</code>, or whatever then creating styles and templates is the only way to create this control; therefore, no there is no better way.</li>
  </ul>
  
  <p>2) Is there a professional control...</p>
  
  <ul>
  <li>Definitely, the <code>ListBoxEdit</code> with the <code>RadioListBoxEditStyleSettings</code>.</li>
  </ul>
  
  <h3>Comments Regarding Answers</h3>
  
  <p>All the answers indicate that creating a <code>RadioButtonList</code> control is not necessary. Yet, if you need more than a couple lists of radio buttons, by the time you create the styles and control templates and maybe data template, you will end up with a collection of code artifacts that can be called a radio-button-list-control. Therefore, in my opinion, a <code>RadioButtonList</code> is necessary.</p>
  
  <p>Moreover, my understanding is a <code>RadioButtonList</code> was dropped in an early WPF CTP. Which I can understand, because of the limited need for such a control that can easily be created.</p>
  
  <h3>Comment Regarding Accepted Answer</h3>
  
  <p>2) Is there a professional control...</p>
  
  <ul>
  <li>Definitely, the <code>ListBoxEdit</code> with the <code>RadioListBoxEditStyleSettings</code>.</li>
  </ul>
  
  <h3>Lastly Comment on Mike Strobel's Answer</h3>
  
  <p>The <code>RadioButtonList</code> that I have is the end-result of his answer. While I am good at creating custom-controls, I rather let third-party component makers, such as Infragistics and DevExpress, create and support a basic control like this one.</p>