Let's add the ability to crouch when the dwarf is idle. The crouch animation is split up into two parts: the transition from stand to crouch, and the looping animation while crouching.
    // Add this in the if (state=="idle") block of the UpdateState method
    if (keyState.IsKeyDown(Keys.Space))
    {
        crouch.ElapsedTime = 0;
        crouch.IsLooping = false;
        crouch.AnimationEnded += new AnimationEventHandler(crouch_AnimationEnded);
        state = "crouchDown";
    }
    // Add this in the crouch_AnimationEnded method
    state = "stayCrouched";
    crouch.AnimationEnded -= crouch_AnimationEnded;
    // Add this in the UpdateState method
    else if (state == "crouchDown")
    {
        RunController(dwarfAnimator, crouch);
    }
    else if (state == "stayCrouched")
    {
        RunController(dwarfAnimator, stayCrouched);
    }