title: ListBox throwing SelectedItems error on right click
body: <p>Im working with Lync SDK and use a ContactSearchResultList (listBox) with <code>SelectionMode="Single"</code>.</p>
  
  <p>But when I right click a item that is not selected the application crashes with the following stack-trace:</p>
  
  <pre><code>System.InvalidOperationException wurde nicht behandelt.
    HResult=-2146233079
    Message=Can only change SelectedItems collection in multiple selection modes. Use SelectedItem in single select modes.
    Source=PresentationFramework
    StackTrace:
         bei System.Windows.Controls.Primitives.Selector.OnSelectedItemsCollectionChanged(Object sender, NotifyCollectionChangedEventArgs e)
         bei System.Collections.ObjectModel.ObservableCollection`1.OnCollectionChanged(NotifyCollectionChangedEventArgs e)
         bei System.Collections.ObjectModel.ObservableCollection`1.ClearItems()
         bei System.Windows.Controls.SelectedItemCollection.ClearItems()
         bei System.Collections.ObjectModel.Collection`1.Clear()
         bei Microsoft.Lync.Controls.UCListBoxItem.OnMouseRightButtonDown(MouseButtonEventArgs e)
         bei System.Windows.UIElement.OnMouseRightButtonDownThunk(Object sender, MouseButtonEventArgs e)
         bei System.Windows.Input.MouseButtonEventArgs.InvokeEventHandler(Delegate genericHandler, Object genericTarget)
         bei System.Windows.RoutedEventArgs.InvokeHandler(Delegate handler, Object target)
         bei System.Windows.RoutedEventHandlerInfo.InvokeHandler(Object target, RoutedEventArgs routedEventArgs)
         bei System.Windows.EventRoute.InvokeHandlersImpl(Object source, RoutedEventArgs args, Boolean reRaised)
         bei System.Windows.UIElement.ReRaiseEventAs(DependencyObject sender, RoutedEventArgs args, RoutedEvent newEvent)
         bei System.Windows.UIElement.OnMouseDownThunk(Object sender, MouseButtonEventArgs e)
         bei System.Windows.Input.MouseButtonEventArgs.InvokeEventHandler(Delegate genericHandler, Object genericTarget)
         bei System.Windows.RoutedEventArgs.InvokeHandler(Delegate handler, Object target)
         bei System.Windows.RoutedEventHandlerInfo.InvokeHandler(Object target, RoutedEventArgs routedEventArgs)
         bei System.Windows.EventRoute.InvokeHandlersImpl(Object source, RoutedEventArgs args, Boolean reRaised)
         bei System.Windows.UIElement.RaiseEventImpl(DependencyObject sender, RoutedEventArgs args)
         bei System.Windows.UIElement.RaiseTrustedEvent(RoutedEventArgs args)
         bei System.Windows.UIElement.RaiseEvent(RoutedEventArgs args, Boolean trusted)
         bei System.Windows.Input.InputManager.ProcessStagingArea()
         bei System.Windows.Input.InputManager.ProcessInput(InputEventArgs input)
         bei System.Windows.Input.InputProviderSite.ReportInput(InputReport inputReport)
         bei System.Windows.Interop.HwndMouseInputProvider.ReportInput(IntPtr hwnd, InputMode mode, Int32 timestamp, RawMouseActions actions, Int32 x, Int32 y, Int32 wheel)
         bei System.Windows.Interop.HwndMouseInputProvider.FilterMessage(IntPtr hwnd, WindowMessage msg, IntPtr wParam, IntPtr lParam, Boolean&amp; handled)
         bei System.Windows.Interop.HwndSource.InputFilterMessage(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean&amp; handled)
         bei MS.Win32.HwndWrapper.WndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean&amp; handled)
         bei MS.Win32.HwndSubclass.DispatcherCallbackOperation(Object o)
         bei System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
         bei MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhen(Object source, Delegate method, Object args, Int32 numArgs, Delegate catchHandler)
         bei System.Windows.Threading.Dispatcher.LegacyInvokeImpl(DispatcherPriority priority, TimeSpan timeout, Delegate method, Object args, Int32 numArgs)
         bei MS.Win32.HwndSubclass.SubclassWndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam)
         bei MS.Win32.UnsafeNativeMethods.DispatchMessage(MSG&amp; msg)
         bei System.Windows.Threading.Dispatcher.PushFrameImpl(DispatcherFrame frame)
         bei System.Windows.Threading.Dispatcher.PushFrame(DispatcherFrame frame)
         bei System.Windows.Threading.Dispatcher.Run()
         bei System.Windows.Application.RunDispatcher(Object ignore)
         bei System.Windows.Application.RunInternal(Window window)
         bei System.Windows.Application.Run(Window window)
         bei System.Windows.Application.Run()
         bei LyncPresenceBrowser.App.Main() in D:\_effexx\_Kunden\DFG\LyncPresenceBrowser\obj\x86\Debug\App.g.cs:Zeile 0.
         bei System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
         bei System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
         bei Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
         bei System.Threading.ThreadHelper.ThreadStart_Context(Object state)
         bei System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
         bei System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
         bei System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
         bei System.Threading.ThreadHelper.ThreadStart()
    InnerException: 
  </code></pre>
  
  <p>Why is it throwing this error? At no point in my Code I am reffering to <code>SelectedItems</code>, I always use <code>SelectedItem</code>. Im stuck, please help me :)</p>
  
  <p>//Heres the event:</p>
  
  <pre><code>public void contactSearchResultList1_SelectionChanged(object sender, SelectionChangedEventArgs e)
  {
      if (contactSearchResultList1.SelectedItem != null &amp;&amp; contactSearchResultList1.SelectedIndex != -1)
      {
          expander1.IsEnabled = true;
          expander2.IsEnabled = true;
          expander1.IsExpanded = true;
          showGroupMembersWindow();
       }
       else
       {
          expander1.IsEnabled = false;
          expander2.IsEnabled = false;
          //closeGroupMembersWindow();
          //closeContactCardWindow();
       }
  }
  </code></pre>