I don't think XNA supports such behavior directly (I might be wrong, though I'm pretty sure it's not the case). (EDIT: This can be done in XNA, see edwing's self-answer.) You can do this manually however.
The idea is simple: see how many rectangles identically sized to the texture fit into your parent rectangle. Then, draw that many rectangles inside of your parent rectangle. Also check if there is unoccupied space left while drawing (if the parent rectangle could not be evenly divided into texture rectangles). Do the math and see what sizes the divided texture rectangles should be.
Here's a rough drawing to get a better idea on the whole matter:
Some pseudo-code to get you started:
CompleteTextureRectsOnHorizontal = ParentWidth div TextureWidth //Integer division
CompleteTextureRectsOnVertical = ParentHeight div TextureHeight //Represents the number of textures that completely fit into the parent rectangle, vertically. The above is the same but horizontally.
ExtraOnHorizontal = ParentWidth - (CompleteTextureRectsOnHorizontal * TextureWidth) //Represents how much space exists between the last texture that fitted perfectly and the rectangle's rightmost bound (if this is 0, then all textures fitted perfectly, horizontally - there's no need to draw half a texture and whatnot).
ExtraOnVertical = ParentHeight - (CompleteTextureRectsOnHeight * TextureHeight) //Same as above, but vertically.
You should proceed by doing something like:
spriteBatch.Draw(Texture, new Rect(location.x, location.y, TextureWidth, TextureHeight);
for complete texture rects.
Then, for the textures that don't really fit it completely, you draw like this:
spriteBatch.Draw(Texture, new Rect(location.x, location.y, ExtraOnHorizontal, TextureHeight); //For textures that fit in vertically, but not horizontally.
spriteBatch.Draw(Texture, new Rect(location.x, location.y, TextureWidth, ExtraOnVertical); //For textures that fit in horizontally, but not vertically.
spriteBatch.Draw(Texture, new Rect(location.x, location.y, ExtraOnHorizontal, ExtraOnVertical); //For textures that don't fit either way. This is normally the texture in the lower right corner of the parent rectangle.
Remember to update the location of each newly drawn texture rect, relative to the previously drawn texture (adding the texture's width to the previously drawn texture's X coordinate gives you your new texture rect's X coordinate, for example).