/// <summary>
        /// Adds a group to the GroupsListBox.
        /// </summary>
        public void AddGroup(Group group)
        {
            //fetch the group from AGOL to ensure it is up to date
            ArcGISOnlineEnvironment.ArcGISOnline.Group.GetGroup(group.Id, (object sender, GroupEventArgs e) =>
            {
                GroupControl.Activate(e.Group);
                ShowPanel(GroupControl);

                ObservableCollection <GroupListBindingWrapper <Group> > groups = (ObservableCollection <GroupListBindingWrapper <Group> >)GroupsListBox.ItemsSource;
                GroupListBindingWrapper <Group> dataContext = null;
                if (!GroupListBoxContains(e.Group))
                {
                    dataContext = new GroupListBindingWrapper <Group>()
                    {
                        Content = e.Group, IsChecked = true
                    };
                    groups.Insert(0, dataContext);
                }
                else
                {
                    dataContext = GetDataGontextForGroup(e.Group);
                }

                dataContext.IsChecked = true;

                RadioButtonSeparator.Visibility = Visibility.Visible;
                GroupsListBox.Visibility        = Visibility.Visible;
                GroupsListBox.ScrollIntoView(dataContext);
            });
        }
        /// <summary>
        /// Occurs when the radio button for a group has been clicked.
        /// </summary>
        private void GroupRadioButton_Click(object sender)
        {
            GroupListBindingWrapper <Group> dataContext = (GroupListBindingWrapper <Group>)((FrameworkElement)sender).DataContext;

            dataContext.IsChecked = true;

            GroupsListBox.ScrollIntoView(dataContext);

            GroupControl.Activate(dataContext.Content);
            ShowPanel(GroupControl);
        }
 /// <summary>
 /// Raised when the details of a group have changed.
 /// </summary>
 void GroupDetailsChanged(object sender, GroupEventArgs e)
 {
     //if the group that was changed is in the GroupsListBox update
     //the corresponding listbox item
     if (GroupsListBox.ItemsSource != null)
     {
         foreach (object obj in GroupsListBox.ItemsSource)
         {
             GroupListBindingWrapper <Group> wrapper = (GroupListBindingWrapper <Group>)obj;
             if (wrapper.Content.Id == e.Group.Id)
             {
                 wrapper.Content = e.Group;
                 break;
             }
         }
     }
 }