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

ControlID Property
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;}
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

ArcGIS Pro version: 2.0 or higher.
See Also