title: ListBox doesn't show any item
body: <p>I have created a <code>ListBox</code> with custom <code>ListBoxItem</code> Template, had bound everything and it worked. When I was still working on my project. I runned the program and that <code>ListBox</code> weren't showing items anymore. Here is my code:</p>
  
  <p>This is <code>ListBox</code> which doesn't show any item:</p>
  
  <pre><code>&lt;ListBox 
     x:Name="LB_SongList" 
     HorizontalAlignment="Left" 
     Height="498" 
     Margin="0,30,0,0" 
     VerticalAlignment="Top" 
     Width="319" 
     Background="{x:Null}" 
     BorderBrush="{x:Null}" 
     Drop="LB_SongList_Drop" 
     PreviewMouseMove="LB_SongList_PreviewMouseMove" 
     PreviewMouseDoubleClick="LB_SongList_PreviewMouseDoubleClick"
     SelectionChanged="LB_SongList_SelectionChanged" 
     AllowDrop="True" 
     ScrollViewer.HorizontalScrollBarVisibility="Disabled" 
     ScrollViewer.VerticalScrollBarVisibility="Visible" 
     SelectionMode="Multiple"
     ItemTemplate="{DynamicResource SongTemplate}"/&gt;
  </code></pre>
  
  <p>Here is my ListBoxItem Template:</p>
  
  <pre><code>    &lt;DataTemplate x:Key="SongTemplate"&gt;
          &lt;Grid Width="302" Height="35"&gt;
              &lt;Label Content="{Binding SongName}" HorizontalAlignment="Stretch" Margin="4" VerticalAlignment="Stretch" Width="Auto" Height="Auto" Padding="2,0,0,0" VerticalContentAlignment="Center"/&gt;
              &lt;Border BorderBrush="#B26A6A6A" BorderThickness="4" HorizontalAlignment="Stretch" Height="35" VerticalAlignment="Top" Width="Auto"&gt;
                  &lt;Border.Style&gt;
                      &lt;Style&gt;
                          &lt;Style.Triggers&gt;
                              &lt;DataTrigger 
                                  Binding="{Binding Path=IsSelected, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type ListBoxItem}}}"
                                  Value="False"&gt;
                                  &lt;Setter 
                                      Property="Border.Visibility"
                                      Value="Collapsed"
                                  /&gt;
                              &lt;/DataTrigger&gt;
                          &lt;/Style.Triggers&gt;
                      &lt;/Style&gt;
                  &lt;/Border.Style&gt;
              &lt;/Border&gt;
          &lt;/Grid&gt;
      &lt;/DataTemplate&gt;
  </code></pre>
  
  <p>And the code:</p>
  
  <pre><code>public partial class MenuHolder : UserControl
  {
      private List&lt;string&gt; List_SongList;
  
      public List&lt;string&gt; L_SongList 
      { 
         get { return List_SongList; } 
         set 
         { 
            _File.ListToObservableCollection_Song(value, O_SongList); 
            List_SongList = value; 
         } 
      }
  
      public List&lt;string&gt; L_PlayLists 
      { 
         get 
         { 
            Settings.Default.Save(); 
            return Settings.Default.L_PlayLists; 
         } 
         set 
         { 
            Settings.Default.L_PlayLists = value; 
            Settings.Default.Save(); 
         } 
      }
  
      public ObservableCollection&lt;Song&gt; O_SongList = new ObservableCollection&lt;Song&gt;();
      public ObservableCollection&lt;string&gt; O_PlayList = new ObservableCollection&lt;string&gt;();
  
      public MenuHolder()
      {
          InitializeComponent();
  
          LB_SongList.ItemsSource = O_SongList;
          LB_PlayList.ItemsSource = O_PlayList;
  
          List&lt;string&gt; temp = new List&lt;string&gt;();
          temp.Add("TestSong");
          L_SongList = temp;
  
      }
  }
  
  public class Song : INotifyPropertyChanged
  {
      public event PropertyChangedEventHandler PropertyChanged;
  
      string _songName;
      string _songLengh;
  
      public Song(){}
      public Song(String _name){ SongName = _name; }
      public Song(String _name, String _lengh) { SongName = _name; SongLengh = _lengh; }
  
      public string SongName
      {
          get { return _songName; }
          set { _songName = value; RaisePropertyChanged("SongName"); }
      }
  
      public string SongLengh
      {
          get { return _songLengh; }
          set { _songLengh = value; RaisePropertyChanged("SongLengh"); }
      }
  
      private void RaisePropertyChanged(string propertyName)
      {
          // take a copy to prevent thread issues
          PropertyChangedEventHandler handler = PropertyChanged;
          if (handler != null)
          {
              handler(this, new PropertyChangedEventArgs(propertyName));
          }
      }
  }
  </code></pre>
  
  <p>And the <code>ListToObservableCollection_Song</code></p>
  
  <pre><code>    public void ListToObservableCollection_Song(List&lt;string&gt; _list, ObservableCollection&lt;Music_Player.Menus.MainMenuObjects.Song&gt; _collection)
      {
          _collection.Clear();
          foreach (string _path in _list)
          {
              _collection.Add(new Menus.MainMenuObjects.Song(GetSongNameFromPath(_path)));
          }
      }
  </code></pre>
  
  <p>The worst thing is that it was working before and in the old version of my program it is still working. Still thinking why it is doing that.</p>