Hola! Tienes que tener en cuenta el carácter orientado a eventos de C#. Cuando tiene lugar un evento, se ejecuta el código asociado al evento.
También puedes llamar el código asociado a un evento desde código. Por ejemplo:
El código asociado al evento click sobre el objeto SubGraphButton sería este:
private void SubGraphButton_Click(object sender, RoutedEventArgs args)
{
//Aquí el código
}
Ahora tú quieres llamar a ese código desde otro método. Lo invocarías así:
private void ChildNode_Click(object sender, RoutedEventArgs args)
{
SubGraphButton_Click(sender, args);
}
Esto no te da control sobre la posición de los clicks. Para tener ese control tendrías que usar una aproximación como la de este ejemplo:
//Esto reemplaza a Cursor.Position en WinForms
[System.Runtime.InteropServices.DllImport("user32.dll")]
static extern bool SetCursorPos(int x, int y);
[System.Runtime.InteropServices.DllImport("user32.dll")]
public static extern void mouse_event(int dwFlags, int dx, int dy, int cButtons, int dwExtraInfo);
public const int MOUSEEVENTF_LEFTDOWN = 0x02;
public const int MOUSEEVENTF_LEFTUP = 0x04;
//Esto simula un click con el botón izquierdo del ratón
public static void LeftMouseClick(int xpos, int ypos)
{
SetCursorPos(xpos, ypos);
mouse_event(MOUSEEVENTF_LEFTDOWN, xpos, ypos, 0, 0);
mouse_event(MOUSEEVENTF_LEFTUP, xpos, ypos, 0, 0);
}
Saludos!