Dan Bryant got most of the answer in his comment.

What's going on here is string interning.  When you create a bunch of strings with the same value, .Net saves on memory usage by having all references to the same string value actually refer to the same string object.  (See this, for instance, for details.)

I don't really know why the ListBox behaves exactly the way it does, which is that the first time you select any item in the list, it selects both that item and the first item in the list.  But it doesn't unselect when you click on a new item because checks to see if the SelectedItem is different from the item you just clicked on, and it isn't.  

I got exactly the same behavior by binding a ListBox to a collection of test objects:

public class TestObject
{
    public override string ToString()
    {
        return GetHashCode().ToString();
    }
}


In MainWindow.xaml:

&lt;ListBox x:Name="MyListBox" ItemsSource={Binding}"/&gt;


In MainWindow.xaml.cs:

ObservableCollection&lt;TestObject&gt; test = new ObservableCollection&lt;TestObject&gt;();
TestObject t = new TestObject();
test.Add(t);
test.Add(t);
test.Add(t);
test.Add(t);
test.Add(t);
test.Add(t);
MyListBox.DataContext = test;


ListBox is selecting many items even in SelectionMode="Single"
I'm wondering how I would go about making extra crispy chicken breading like they do at many places like KFC and the like. Is there a certain ingredient that makes the breading like that?

Any assistance would be very much appreciated, and feel free to share any of your own recipes for crispy chicken breading if you have them. I'll be sure to put them to good use!

Thanks!
