First of all: DTSTTCPW. You probably shouldn't be using services at all. If you can send around individual objects, you should generally do that. I recommend you read my description of why services exist, on Stack Overflow.
Otherwise, if you specifically want to use services for your architecture:
The architecturally correct thing to do would be to take an
IServiceProvider object as an argument (to which you you could pass
Game.Services) for any object/method that needs to consume services. This is what
For an object/method needs to add services, you should pass around
Game (this is what XNA's
GraphicsDeviceManager's constructor takes, so it can add the
GameServiceContainer (which is what
(It should be noted that the whole
Game assembly is optional in XNA - there is no way to make an object that can add services without introducing a dependency on that assembly.
IServiceProvider is part of the .NET framework - but it cannot be used to add services.)
It is "bad" architecture to make these things global. But you can do it for expediency - as long as you understand (and comment appropriately) why you are doing so. Just be mindful that you may need to "undo" this deliberately-bad architecture in the future.
(There are many reasons globals are bad architecture. Here is just one good reference.)