/// <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; } } } }