ArcGIS Pro SDK (五)内容 4 收藏夹
目录
环境:Visual Studio 2022 + .NET6 + ArcGIS Pro SDK 3.0
1 添加收藏夹 - 文件夹
var itemFolder = ItemFactory.Instance.Create(@"d:\data");
//文件夹项已经是收藏夹的了吗?
var fav = FavoritesManager.Current.GetFavorite(itemFolder);
if (fav == null)
{
if (FavoritesManager.Current.CanAddAsFavorite(itemFolder))
{
fav = FavoritesManager.Current.AddFavorite(itemFolder);
}
}
2 插入收藏夹 - 地理数据库路径
string gdbPath = "@C:\\myDataFolder\\myData.gdb";
var itemGDB = ItemFactory.Instance.Create(gdbPath);
//文件夹项已经是收藏夹的了吗?
var fav = FavoritesManager.Current.GetFavorite(itemGDB);
//没有;将IsAddedToAllNewProjects设置为true来添加它
if (fav != null)
{
if (FavoritesManager.Current.CanAddAsFavorite(itemGDB))
FavoritesManager.Current.InsertFavorite(itemGDB, 1, true);
}
3 添加收藏夹 - 设置项目项的样式
StyleProjectItem styleItem = Project.Current.GetItems<StyleProjectItem>().
FirstOrDefault(style => (style.Name == "ArcGIS 3D"));
if (FavoritesManager.Current.CanAddAsFavorite(styleItem))
{
//添加到收藏夹,IsAddedToAllNewProjects设置为false
FavoritesManager.Current.AddFavorite(styleItem);
}
4 切换标志是添加到所有新项目为收藏夹
var itemFolder = ItemFactory.Instance.Create(@"d:\data");
//文件夹项已经是收藏夹的了吗?
var fav = FavoritesManager.Current.GetFavorite(itemFolder);
if (fav != null)
{
if (fav.IsAddedToAllNewProjects)
FavoritesManager.Current.ClearIsAddedToAllNewProjects(fav.Item);
else
FavoritesManager.Current.SetIsAddedToAllNewProjects(fav.Item);
}
5 获取收藏夹集并迭代
var favorites = FavoritesManager.Current.GetFavorites();
foreach (var favorite in favorites)
{
bool isAddedToAllProjects = favorite.IsAddedToAllNewProjects;
//检索收藏的基础项目
Item item = favorite.Item;
//项属性
var itemType = item.TypeID;
var path = item.Path;
//如果它是一个文件夹项目
if (item is FolderConnectionProjectItem)
{
}
//如果它是一个地理数据库项目
else if (item is GDBProjectItem)
{
}
// else
}
6 删除所有收藏夹
var favorites = FavoritesManager.Current.GetFavorites();
foreach (var favorite in favorites)
FavoritesManager.Current.RemoveFavorite(favorite.Item);
7 收藏夹更改事件
ArcGIS.Desktop.Core.Events.FavoritesChangedEvent.Subscribe((args) =>
{
// 收藏夹改变了
int count = FavoritesManager.Current.GetFavorites().Count;
});