readonly means that the field can only be set in the constructor (or in a field initializer). Properties specified in the object initializer are set after the constructor has returned. That is,
TestStruct ts = new TestStruct {
TestField = "something"
};
is basically equivalent to
TestStruct ts = new TestStruct();
ts.TestField = "something";
(In practicea Debug build, the compiler may use a temporary variable, but you get the idea.)