ArcGIS Pro 3.0 API Reference Guide
ArcGIS.Desktop.Mapping Namespace / MapTool Class / ControlID Property
Example

In This Topic
    ControlID Property
    In This Topic
    Gets or sets the DAML ID of the embeddable control to show in the dock pane when the tool is active.
    Syntax
    protected string ControlID {get; set;}
    Protected Property ControlID As String
    Remarks
    In some cases you may need to provide a dock pane to configure the behavior of the tool while in use similar to many of the editing tools. This property allows you to define a Embeddable Control to display within a dock pane while to the tool is active. If you close the dock pane the tool will be deactivated and if you activate a different tool the dock pane will close. You can get a reference to the Embeddable Control using the EmbeddableControl property.
    Example
    Embeddable Control
    internal class MapTool_WithControl : MapTool
    {
      public MapTool_WithControl()
      {
        ControlID = "mapTool_EmbeddableControl";
      }
    
      protected override void OnToolMouseDown(MapViewMouseButtonEventArgs e)
      {
        e.Handled = true;
      }
    
      protected override Task HandleMouseDownAsync(MapViewMouseButtonEventArgs e)
      {
        //Get the instance of the ViewModel
        var vm = EmbeddableControl as EmbeddedControlViewModel;
        if (vm == null)
          return Task.FromResult(0);
    
        //Get the map coordinates from the click point and set the property on the ViewMode.
        return QueuedTask.Run(() =>
          {
            var mapPoint = MapView.Active.ClientToMap(e.ClientPoint);
            vm.ClickText = string.Format("X: {0}, Y: {1}, Z: {2}", mapPoint.X, mapPoint.Y, mapPoint.Z);
          });
      }
    }
    Tool with an Embeddable Control
    // Using the Visual Studio SDK templates, add a MapTool and an EmbeddableControl
    // The EmbeddableControl is registered in the "esri_embeddableControls" category in the config.daml file
    // 
    //  <categories>
    //    <updateCategory refID = "esri_embeddableControls" >
    //      <insertComponent id="mapTool_EmbeddableControl" className="EmbeddableControl1ViewModel">
    //        <content className = "EmbeddableControl1View" />
    //      </insertComponent>
    //    <updateCategory>
    //  </categories>
    internal class MapTool_WithControl : MapTool
    {
      public MapTool_WithControl()
      {
        // substitute this string with the daml ID of the embeddable control you added
        ControlID = "mapTool_EmbeddableControl";
      }
    
      protected override void OnToolMouseDown(MapViewMouseButtonEventArgs e)
      {
        e.Handled = true;
      }
    
      protected override Task HandleMouseDownAsync(MapViewMouseButtonEventArgs e)
      {
        //Get the instance of the ViewModel
        var vm = EmbeddableControl;
        if (vm == null)
          return Task.FromResult(0);
    
        // cast vm to your viewModel in order to access your properties
    
        //Get the map coordinates from the click point and set the property on the ViewMode.
        return QueuedTask.Run(() =>
        {
          var mapPoint = MapView.Active.ClientToMap(e.ClientPoint);
          string clickText = string.Format("X: {0}, Y: {1}, Z: {2}", mapPoint.X, mapPoint.Y, mapPoint.Z);
        });
      }
    }
    Requirements

    Target Platforms: Windows 11, Windows 10, Windows 8.1

    See Also