To trigger a trigger action, you need a trigger!
namespace TriggerTest { using System.Windows;
The above implementation is a trigger implementation that can be invoked without any user interface dependencies. For instance:
var measure = new MeasureAction(); measure.TargetObject = _mapControl; measure.MeasureMode = MeasureAction.Mode.Polyline; measure.MapUnits = DistanceUnit.Miles; ManualTrigger trigger = new ManualTrigger(); trigger.Actions.Add(measure); trigger.Invoke(null);
To make this even easier, you can add an extension method to TriggerAction .
namespace TriggerTest { using System.Windows.Interactivity; /// <summary> /// Allows a trigger action to be invoked from code. /// </summary> public static class TriggerActionExtensions { /// <summary> /// Invokes a <see cref="TriggerAction"/> with the specified parameter. /// </summary> /// <param name="action">The <see cref="TriggerAction"/>.</param> /// <param name="parameter">The parameter value.</param> public static void Invoke(this TriggerAction action, object parameter) { ManualTrigger trigger = new ManualTrigger(); trigger.Actions.Add(action); try { trigger.Invoke(parameter); } finally { trigger.Actions.Remove(action); } } /// <summary> /// Invokes a <see cref="TriggerAction"/>. /// </summary> /// <param name="action">The <see cref="TriggerAction"/>.</param> public static void Invoke(this TriggerAction action) { action.Invoke(null); } } }
Now you can write what you really need :
var measure = new MeasureAction(); measure.TargetObject = _mapControl; measure.MeasureMode = MeasureAction.Mode.Polyline; measure.MapUnits = DistanceUnit.Miles; measure.Invoke();
source share