I would try to get away from initializing controls as much as possible in code behind and use data binding instead.

In addition rather than using a fixed number of controls in an array, I would use a custom list and bind the array to the list (in other words, each SegmentControl would be a list item).

The advantage of this approach is that you would end up with very little initialization code in the code behind.