Can structs contain fields of reference types? And if they can is this a bad practice?
Yes, it is possible, and yes, it is usually a bad practice.
If you look at the .NET framework itself, you'll see virtually all structs contain primitive value types alone.