概要
ArcGIS Pro SDK では、ボタンだけでなくギャラリーを追加することができます。ギャラリーには複数のギャラリー アイテムを追加することができ、グループを設定して分類することができます。
ここでは、カレント プロジェクトに挿入されたマップを取得し、そのタイプ (マップあるいはシーン) に応じてグループ表示するためのギャラリーを追加します。
サンプル コード
コード内の<>は半角に置き換えてからサンプル コードをご利用ください。
config.daml
ギャラリーの外観を daml ファイルで定義します。「galleries」カテゴリで、ギャラリー内に表示するギャラリー アイテムの列数 (itemsInRow) や、グループを表示するか (showGroup) といったプロパティを設定します。
Tooltip text</disabledtext>
Garally クラス
Garally クラスに、ギャラリーの処理を記述していきます。Initialize メソッドを実行した際に、ギャラリーにギャラリーアイテムを追加する処理を記述します。
private void Initialize()
{
if (_isInitialized)
return;
//プロジェクトのマップを取得
var maps= Project.Current.GetItems<MapProjectItem>();
//マップの数だけループ
foreach (var map in maps)
{
//マップの名称を取得
string mapname = map.Name;
//マップ名のギャラリーアイテムを追加
//グループ名はMap クラスの MapType プロパティから取得
Add(new GalleryItem(mapname, this.LargeImage != null ? ((ImageSource)this.LargeImage).Clone() : null, mapname, map.MapType.ToString()));
}
_isInitialized = true;
}
OnClick イベント内で、クリックしたギャラリー アイテムをもとに処理を実装します。ここでは、クリックしたマップを開く処理を実装します。
protected async override void OnClick(GalleryItem item)
{
//TODO - insert your code to manipulate the clicked gallery item here
System.Diagnostics.Debug.WriteLine("Remove this line after adding your custom behavior.");
base.OnClick(item);
//クリックしたギャラリーアイテムからマップ アイテムを取得
var mapItem = Project.Current.GetItems<MapProjectItem>().FirstOrDefault(
m => (m.Name == item.Text));
await QueuedTask.Run(() =>
{
//マップアイテムから Map オブジェクトを取得
Map map = mapItem.GetMap();
//マップ ビューを開く
ProApp.Panes.CreateMapPaneAsync(map);
});
}
参考情報
このナレッジはお役に立ちましたか?
フィードバックをいただきありがとうございます!