One way to do it is using a scaling matrix.
You can setup a scaling matrix in a method with no parameters and add that method to windowsClientSizedChanged in your constructor or initialize.
Then later pass that to spritebatch
Within your method get the current screen width and height compared to some set screen size you design your game in to create a streaching ratio.
Matrix screenScale = Matrix.Identity;
// add your recieving method to be called back
this.Window.ClientSizeChanged += HeyCallMeWhenTheWindowChangesSize;
// this sender can take more then one call back method +=
public void HeyCallMeWhenTheWindowChangesSize(object sender, EventArgs e)
/* we are here when the windows being resized */
var r = GraphicsDevice.Viewport.Bounds;
screenScale = Matrix.Identity * Matrix.CreateScale(r.Width / designWidth, r.Height / designHeight, 0f);
// design is typically a constant to the screen resolution you designed your game in.
// in spriteBatch.Begin( .... , ..., .... there is a overload that takes a matrix ..)
// spriteBatch.Begin( .... , ... , screenScale