protected SymbolsViewModel() { SearchPauseSearching = true; #region Events //Subscribe to ProjectItemsChangedEvent to update ProjecyStyles ProjectItemsChangedEvent.Subscribe(OnProjectItemsChanged); ProjectClosedEvent.Subscribe(OnProjectClosed); //Subscribe to ActiveMapViewChangedEvent in order to get the layers in the map ActiveMapViewChangedEvent.Subscribe(OnActiveMapViewChanged); LayersAddedEvent.Subscribe(OnLayersAdded); LayersRemovedEvent.Subscribe(OnLayersemoved); //Subscribe to Graphic Elements selection changed event ElementSelectionChangedEvent.Subscribe(OnGraphicsElementSelectionChanged); #endregion BindingOperations.EnableCollectionSynchronization(_layersInMap, _layersInMapLock); _ = GetLayersInMapAsync(); _patchTypes = new Dictionary <StyleItemType, SymbolPatchType> { { StyleItemType.LineSymbol, SymbolPatchType.ZigzagLine }, { StyleItemType.PolygonSymbol, SymbolPatchType.BoundaryPoly } }; //Get the Styles in the project ProjectFilterStyles.Add(new SymbolSearcherSearchFilter(true)); ProjectFilterStyles.Add(new SymbolSearcherSearchFilter()); foreach (var pi in Project.Current.GetItems <StyleProjectItem>()) { ProjectFilterStyles.Add(new SymbolSearcherSearchFilter(false, pi)); } if (SelectedProjectFilterStyle == null && ProjectFilterStyles.Count > 0) { SelectedProjectFilterStyle = ProjectFilterStyles[0]; } //Get the various StyleItemTypes in Pro. foreach (StyleItemType sit in Enum.GetValues(typeof(StyleItemType))) { if (sit == 0) { continue; } StyleItemTypeValues.Add(sit); } SelectedStyleItemType = StyleItemTypeValues.FirstOrDefault(); SearchPauseSearching = false; }
private void OnProjectItemsChanged(ProjectItemsChangedEventArgs obj) { if (!(obj.ProjectItem is StyleProjectItem pi)) { return; } var getStyleProjectItems = (Action)(() => { if (ProjectFilterStyles.Count == 0) { ProjectFilterStyles.Add(new SymbolSearcherSearchFilter(true)); ProjectFilterStyles.Add(new SymbolSearcherSearchFilter()); } ProjectFilterStyles.Add(new SymbolSearcherSearchFilter(false, pi)); if (SelectedProjectFilterStyle == null && ProjectFilterStyles.Count > 0) { // select the default search type SelectedProjectFilterStyle = ProjectFilterStyles[0]; SearchPauseSearching = false; } }); ActionOnGuiThread(getStyleProjectItems); }
private void OnProjectClosed(ProjectEventArgs obj) { ActionOnGuiThread(() => { ProjectFilterStyles.Clear(); }); }