protected EmbeddableControl OverlayEmbeddableControl {get;}
Protected ReadOnly Property OverlayEmbeddableControl As EmbeddableControl
protected EmbeddableControl OverlayEmbeddableControl {get;}
Protected ReadOnly Property OverlayEmbeddableControl As EmbeddableControl
internal class MapTool_WithOverlayControl : MapTool { public MapTool_WithOverlayControl() { OverlayControlID = "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 = OverlayEmbeddableControl 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); }); } }
// 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_WithOverlayControl : MapTool { public MapTool_WithOverlayControl() { // substitute this string with the daml ID of the embeddable control you added OverlayControlID = "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 = OverlayEmbeddableControl; 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); }); } }
Target Platforms: Windows 11, Windows 10, Windows 8.1