private async void AddFolderToProject(string addFolderPath) { try { // Add a folder to the Project var folderToAdd = ItemFactory.Instance.Create(addFolderPath); await QueuedTask.Run(() => Project.Current.AddItem(folderToAdd as IProjectItem)); // find the folder project item FolderConnectionProjectItem folder = Project.Current.GetItems <FolderConnectionProjectItem>().FirstOrDefault(f => f.Path.Equals(addFolderPath, StringComparison.CurrentCultureIgnoreCase)); if (folder == null) { return; } // do the search IEnumerable <Item> folderFiles = null; await QueuedTask.Run(() => folderFiles = folder.GetItems().Where(f => f.Path.EndsWith(Filter, StringComparison.CurrentCultureIgnoreCase))); // search MXDs lock (_lockMxdItemCollection) { _mxdItems.Clear(); foreach (var newItem in folderFiles) { _mxdItems.Add(newItem); } } NotifyPropertyChanged(() => MxdItems); } catch (Exception ex) { MessageBox.Show("Error adding folder to project: " + ex.ToString()); } }
/// <summary> /// Sample code for ProjectItem /// </summary> public async Task ProjectItemExamples() { // not to be included in sample regions var projectFolderConnection = (Project.Current.GetItems <FolderConnectionProjectItem>()).First(); #region GetMapProjectItems /// Get all the maps in a project IEnumerable <MapProjectItem> projectMaps = Project.Current.GetItems <MapProjectItem>(); #endregion //GetMapProjectItems #region GetFolderConnectionProjectItems /// Get all the folder connections in a project IEnumerable <FolderConnectionProjectItem> projectFolders = Project.Current.GetItems <FolderConnectionProjectItem>(); #endregion //GetFolderConnectiontProjectItems #region GetServerConnectionProjectItems /// Get all the server connections in a project IEnumerable <ServerConnectionProjectItem> projectServers = Project.Current.GetItems <ServerConnectionProjectItem>(); #endregion //GetServerConnectionProjectItems #region GetLocatorConnectionProjectItems /// Get all the locator connections in a project IEnumerable <LocatorsConnectionProjectItem> projectLocators = Project.Current.GetItems <LocatorsConnectionProjectItem>(); #endregion //GetLocatorConnectionProjectItems #region GetProjectItemContent /// Get all the items that can be accessed from a folder connection. The items immediately /// contained by a folder, that is, the folder's children, are returned including folders /// and individual items that can be used in ArcGIS Pro. This method does not return all /// items contained by any sub-folder that can be accessed from the folder connection. FolderConnectionProjectItem folderConnection = Project.Current.GetItems <FolderConnectionProjectItem>() .FirstOrDefault((folder => folder.Name.Equals("Data"))); await QueuedTask.Run(() => { IEnumerable <Item> folderContents = folderConnection.GetItems(); }); #endregion //GetProjectItems #region AddFolderConnectionProjectItem /// Add a folder connection to a project Item folderToAdd = ItemFactory.Instance.Create(@"C:\Data\Oregon\Counties\Streets"); bool wasAdded = await QueuedTask.Run(() => Project.Current.AddItem(folderToAdd as IProjectItem)); #endregion //AddFolderConnectionProjectItem #region AddGDBProjectItem /// Add a file geodatabase or a SQLite or enterprise database connection to a project Item gdbToAdd = folderToAdd.GetItems().FirstOrDefault(folderItem => folderItem.Name.Equals("CountyData.gdb")); var addedGeodatabase = await QueuedTask.Run(() => Project.Current.AddItem(gdbToAdd as IProjectItem)); #endregion //AddGDBProjectItem #region RemoveFolderConnectionFromProject /// Remove a folder connection from a project; the folder stored on the local disk /// or the network is not deleted FolderConnectionProjectItem folderToRemove = Project.Current.GetItems <FolderConnectionProjectItem>().FirstOrDefault(folder => folder.Name.Equals("PlantSpecies")); if (folderToRemove != null) { Project.Current.RemoveItem(folderToRemove as IProjectItem); } #endregion //RemoveFolderConnectionFromProject #region RemoveMapFromProject /// Remove a map from a project; the map is deleted IProjectItem mapToRemove = Project.Current.GetItems <MapProjectItem>().FirstOrDefault(map => map.Name.Equals("OldStreetRoutes")); var removedMapProjectItem = await QueuedTask.Run( () => Project.Current.RemoveItem(mapToRemove)); #endregion //RemoveMapFromProject #region ImportToProject /// Import a mxd Item mxdToImport = ItemFactory.Instance.Create(@"C:\Projects\RegionalSurvey\LatestResults.mxd"); var addedMxd = await QueuedTask.Run( () => Project.Current.AddItem(mxdToImport as IProjectItem)); /// Add map package Item mapPackageToAdd = ItemFactory.Instance.Create(@"c:\Data\Map.mpkx"); var addedMapPackage = await QueuedTask.Run( () => Project.Current.AddItem(mapPackageToAdd as IProjectItem)); /// Add an exported Pro map Item proMapToAdd = ItemFactory.Instance.Create(@"C:\ExportedMaps\Election\Districts.mapx"); var addedMapProjectItem = await QueuedTask.Run( () => Project.Current.AddItem(proMapToAdd as IProjectItem)); #endregion //ImportToProject }