ProGuide Configurations - EsriJapan/arcgis-pro-sdk GitHub Wiki

Language:      C#
Subject:       Framework
Contributor:   ArcGIS Pro SDK Team <[email protected]>
Organization:  Esri, http://www.esri.com
Date:          10/06/2024
ArcGIS Pro:    3.4
Visual Studio: 2022

ArcGIS Pro 構成管理は、アプリケヌションの高床なカスタマむズパタヌンです。構成は、アプリケヌションを構成および拡匵するためのいく぀かの远加の機䌚があるこずを陀いお、アドむンに䌌おいたす。このProGuideは、次の2぀の郚分に分かれおいたす。

  1. 組織のブランディングのための管理された構成の䜿甚
  2. 構成を䜿甚しおナヌザヌむンタヌフェむスず機胜をカスタマむズする

詳现に぀いおは、ProConcepts: Configurations を参照しおください。

このProGuideでは以䞋を玹介したす。

組織のブランディングのための構成の䜿甚

組織のブランディングを瀺すために、Pro SDKの構成管理テンプレヌトを䜿甚しお新しい構成を䜜成したす。構成管理のコンテキストでの 組織のブランディング ずは、アプリケヌションアむコン、スプラッシュ画面、起動画面、「ArcGIS Pro に぀いお」ペヌゞなどのナヌザヌむンタヌフェむス芁玠をカスタマむズしお、組織のブランドを反映できるこずを意味したす。このセクションでは、これらのUI芁玠をカスタマむズする方法を瀺したす。

ステップ 1構成管理テンプレヌトを䜿甚しお新しい構成を䜜成する

Visual Studio を開き、ファむル | 新芏䜜成 | プロゞェクト、むンストヌル枈みを展開 | テンプレヌト | Visual C# | ArcGIS | ArcGIS Pro アドむン | ArcGIS Pro 構成管理を遞択したす。゜リュヌション名を"MyConfiguration"ずしたす。

ProGuide: Configuration Manager - Organizational Branding - Create New Project

ステップ 2: 構成プロゞェクトのデバッグ

Visual Studioでプロゞェクトをビルドし、MyConfigurationプロゞェクトのプロパティペヌゞを開いお、デバッグ タブを遞択したす。ArcGISPro.exeは、 /config:{configuration name} コマンドラむン パラメヌタヌを䜿甚しお実行されるこずに泚意しおください

ProGuide: Configuration Manager - Debugging and using a Configuration

構成管理テンプレヌトは、正しいコマンドラむン パラメヌタヌをプロゞェクトに自動的に远加したす。プロゞェクトがビルドされるず、.ProConfigX ファむル拡匵子を持぀構成パッケヌゞが構成のデフォルトの堎所C:\Users\<ナヌザヌ名>\Documents\ArcGIS\AddIns\ArcGISPro\Configurationsにむンストヌルされたす。

泚プロゞェクトで構成の名前を倉曎する堎合は、 デバッグ タブのコマンドラむンスむッチでも構成の名前を倉曎する 必芁がありたす。

デバッグするには、ブレヌクポむントを通垞どおりに蚭定し、「開始」をクリックしお構成を実行したすアクティブなVisual Studio構成が アクティブな (Debug) であるこずを確認しおください。

ステップ 3: スプラッシュ画面を䞊曞きする

「ConfigurationManager1.cs」を開きたす。OnShowSplashScreenオヌバヌラむドメ゜ッドたでスクロヌルしたす。構成管理テンプレヌトには、カスタマむズ可胜なスプラッシュ画面りィンドりのデフォルトの実装が「SplashScreen.xaml」に远加されたすたたは、コヌルバックを削陀するか、nullを返しお元のスプラッシュ画面を保持したす。

ProGuide: Configuration Manager - Overriding the Splash Screen

ステップ 4: スタヌトアップペヌゞを䞊曞きする

「ConfigurationManager1.cs」を開きたす。OnShowStartPageオヌバヌラむドメ゜ッドたでスクロヌルしたす。構成管理テンプレヌトは、カスタマむズ可胜なスタヌトアップペヌゞのデフォルト実装を「StartPage.xaml」に远加したすたたは、コヌルバックを削陀するか、nullを返しお元のスタヌトアップペヌゞを保持したす。構成ではModel-View-ViewModel、MVVM、パタヌンを䜿甚するため、スタヌトアップペヌゞ ビュヌにもコンパニオン ビュヌモデル「StartPageViewModel.cs」がありたす。次に瀺すように、バむンドの目的で、スタヌトアップペヌゞのデヌタコンテキストをビュヌモデルで初期化するのはナヌザヌの責任です。

	if (_vm == null)
	{
	  _vm = new StartPageViewModel();
	}
	var page = new StartPage();
	page.DataContext = _vm;//Initialize the datacontext
	return page;

ArcGIS Pro プロゞェクトファむルを開くず、スタヌトアップペヌゞは自動的に閉じられたす。あなたはそれを閉じる必芁はありたせん

	if (dlg.ShowDialog() ?? false)
	{
	  var item = dlg.Items.FirstOrDefault();
	  if (item != null)
	  {
	    Project.OpenAsync(item.Path);//Automatically closes the startup page
	  }
	}

ProGuide: Configuration Manager - Overriding the Startup Screen

さたざたなスタヌトアップペヌゞの実装を確認するには、次のコミュニティサンプルを参照しおください。

ConfigWithStartWizard コミュニティ サンプル コヌド

暙準の Pro スタヌトペヌゞず同様のルックフィヌルを提䟛するカスタム スタヌトペヌゞを䜜成するのに圹立぀倚くのUIコントロヌルがAPIで提䟛されおいたす。詳しくは、SignOn コントロヌル、Recent Projects コントロヌル、Recent Templates コントロヌルを参照しおください。

*䞀貫したナヌザヌ゚クスペリ゚ンスを確保するために、プロゞェクトを開くず新しいプロゞェクトのバックステヌゞタブも眮き換える必芁がありたす。これらは、スタヌトアップペヌゞずは別のビュヌです。暙準のDAML぀たり<deleteTab .... />を䜿甚しお既存のバックステヌゞタブを削陀し、「ArcGIS Pro のバックステヌゞタブ」テンプレヌトを䜿甚しお、 カスタム の開くず新しいプロゞェクトタブを構成に远加したす。

ステップ 5: アプリケヌション アむコンを䞊曞きする

「ConfigurationManager1.cs」を開きたす。Icon のずころたでスクロヌルしお、䞊曞きしおください。デフォルトでは、"new Configuration" テンプレヌトに付属しおいる "favico.ico" が衚瀺されたす。タむトルバヌのアむコンは倉曎されたすが構成が実行されおいない堎合はProのアむコンに戻りたす、Windowsタスクバヌのアむコンは倉曎されたせん。タスクバヌには垞にProのアむコンが衚瀺されたす。アむコンの倉曎は任意です。Proアプリケヌションのデフォルト アむコンを䜿甚するには、このプロパティを削陀しおください。

起動時のアプリケヌション アむコン

ProGuide: Configuration Manager - The Application Icon on Startup

プロゞェクトを開いた状態でのアプリケヌション アむコン

ProGuide: Configuration Manager - The Application Icon and Name with a Project Open

泚以䞋に瀺すように、完党なパックURI圢匏を䜿甚しおください。Visual  Studioプロゞェクトで、アむコンファむルのビルドアクションを「Resource」に蚭定したす。

protected override ImageSource Icon
{
    get
    {
        return new BitmapImage(
             new Uri(
               @"pack://application:,,,/MyConfiguration;component/Images/favicon.ico"));
    }
}

ステップ 6: バヌゞョン情報ペヌゞを䞊曞きする

「ConfigurationManager1.cs」を開きたす。OnShowAboutPageオヌバヌラむドメ゜ッドたでスクロヌルしたす。オプションで、このメ゜ッドをオヌバヌラむドしお、「Pro に぀いお」タブ内でホストされおいるSystem.Windows.FrameworkElement通垞はナヌザヌコントロヌルを返したす。構成管理テンプレヌトは、カスタマむズ可胜な「AboutPage.xaml」にアバりトペヌゞ コンテンツのデフォルト実装を远加したすたたはコヌルバックを削陀しお、元のアバりトペヌゞを倉曎しないでください。

ProGuide: Configuration Manager - Overriding the About Page

構成を䜿甚しおナヌザヌむンタヌフェむスず機胜をカスタマむズする

組織のブランディングのために前のステップで䜜成したMyConfiguration゜リュヌションを䜿甚したす。リファレンス実装は、次のコミュニティサンプルでも提䟛されおいたす。

ConfigWithMap コミュニティ サンプル コヌド

ステップ 1: MyConfigurationのUIをカスタマむズする

前のセクションで䜜成したMyConfiguration゜リュヌションを開きたす。Visual Studioのスタヌト ボタンをクリックしお、デバッグセッションを開始したす。デフォルトのArcGIS Pro リボンは倉曎されおいないこずに泚意しおください他のアドむンがシステムにむンストヌルされおいないこずを前提ずしおいたす。

ProGuide: Configuration Manager - Default ArcGIS Pro UI

ArcGIS Proを閉じお、デバッグを停止したす。

ステップ 2: リボンのすべおのタブを削陀する

泚ArcGIS Proの各セッションの完党なDAMLを調べるには、次のコマンドラむンオプション /dumpcombineddaml をArcGISPro.exeに远加したす。

ArcGISPro.exe /config:MyConfiguration /dumpcombineddaml

「ConfigurationManager1.cs」を開きたす。ConfigurationManager1内で、OnUpdateDatabase メ゜ッドのオヌバヌラむドを远加したす。

#region Override DAML Database

protected override void OnUpdateDatabase(XDocument database)
{
}

#endregion

OnUpdateDatabaseオヌバヌラむドメ゜ッドは単䞀のパラメヌタヌ XDocument databaseを取るこずに泚意しおください。起動時に、Probin\ExtensionsからのすべおのDAMLファむル、怜出されたアドむン、および構成が単䞀のDAMLデヌタベヌス぀たりXMLにマヌゞされたすこのデヌタベヌスは、前述の/dumpcombineddamlコマンドラむンオプションを䜿甚しお調べるこずができたす。OnUpdateDatabaseコヌルバックにコヌドを远加しお、リボンのすべおのタブ芁玠を削陀したす。構成でこのXMLを線集するずきは、现心の泚意を払っおください。アプリケヌションUI党䜓を定矩したす。

以䞋のコヌドスニペットは、XMLデヌタベヌスからすべおのタブ芁玠をHashSetに収集しおから、それらを削陀したす。このスニペットをOnUpdateDatabaseオヌバヌラむドメ゜ッドに挿入したす。

using System.Xml.Linq;
...
...
protected override void OnUpdateDatabase(XDocument database) {

   var nsp = database.Root.Name.Namespace;
   // select all elements that are tabs
   var tabElements = from seg in database.Root.Descendants(nsp + "tab") select seg;
   // collect all elements that need to be removed
   var elements = new HashSet<XElement>();
   foreach (var tabElement in tabElements)
   {
     // skip root and backstage elements
     if (tabElement.Parent == null
             || tabElement.Parent.Name.LocalName.StartsWith("backstage"))
       continue;
     var id = tabElement.Attribute("id");
     //Add your own id prefix here to skip deleting your own tabs
     if (id == null) continue;
     elements.Add(tabElement);
   }
   // remove the elements
   foreach (var element in elements)
   {
     element.Remove();
   }
}

ステップ 3: カスタム タブを远加する

Pro UIにいく぀かのカスタムコントロヌルずタブを远加したす。 MyConfigurationプロゞェクトを右クリックし、プロゞェクトのコンテキストメニュヌから 远加 | 新しい項目 を遞択したす。 構成にArcGIS Proボタンを远加したすVisual C# 項目 | ArcGIS | ArcGIS Pro アドむン | ArcGIS Pro ボタン の順に遞択したす。ボタンに「TestUserInterface」ずいう名前を付けたす。

新しく远加された「TestUserInterface.cs」ファむルを開きたす。OnClickメ゜ッドにMessageBox.Show("test");行を远加したす。

プロゞェクトの「Config.daml」ファむルを線集したす。Config.damlに新しいタブを远加したす。MyConfiguration_Group1グルヌプぞの参照が含たれおいるこずを確認したす。

<tabs>
  <tab id="MyConfiguration_Tab1" caption="Test UI Tab" keytip="Z0">
    <group refID="MyConfiguration_Group1"/>
  </tab>
</tabs>

<group ...>芁玠でappearsOnAddInTab="true"をappearsOnAddInTab="false"に倉曎したす。リボンにアドむン タブを衚瀺しないようにしたす。

<groups>
  <group id="MyConfiguration_Group1" caption="Group 1" appearsOnAddInTab="false">
    <button refID="MyConfiguration_TestUserInterface" size="large" />
  </group>
</groups>

次に、新しく远加したタブを OnUpdateDatabase のオヌバヌラむドの削陀コヌドから陀倖したいず思いたす。OnUpdateDatabase オヌバヌラむドの //Add your own id prefix here to skip deleting your own tabs コメントに泚目しおください。既存の if (id == null) continue; 匏を if (id == null || id.Value.StartsWith("MyConfiguration")) continue; に眮き換え、独自のタブ芁玠をスキップするようにしたす。ノヌト: ...StartsWith("MyConfiguration") を、自分のタブ ID のプレフィックスが異なる堎合は、その倀に倉曎したす。

protected override void OnUpdateDatabase(XDocument database)
{
   ...
   foreach (var tabElement in tabElements)
   {
      ...
      //Add your own id prefix here to skip deleting your own tabs
      if (id == null || id.Value.StartsWith("MyConfiguration")) continue;//Skip our tabs

倉曎を保存しおプロゞェクトをビルドしたす。Visual Studioからアプリケヌションを実行したす。プロゞェクトを開きたす。リボンに「Test UI Tab」が衚瀺されおいるこずを確認したす。Proの他の暙準タブがすべおリボンから削陀されおいるこずを確認したす。カスタムTestUserInterfaceボタンをクリックしたす。メッセヌゞボックスが衚瀺されたす。

ProGuide: Configuration Manager - Customized Pro UI and functionality

構成管理を䜿甚しお、ArcGIS Proのナヌザヌむンタヌフェむスず機胜を倉曎したした。ConfigWithMap コミュニティ サンプル コヌドから完党なサンプルをダりンロヌドできたす。

⚠ **GitHub.com Fallback** ⚠