When I set collection value from xaml within the control as such it seems to set value correctly:
The cause is that a local property value has higher precedence than a value from a Style Setter.
Instead of setting a local value, you could use the SetCurrentValue method:
public InjectCustomArray()
{
InitializeComponent();
SetCurrentValue(MyPropertyProperty, new ICustomType[0]);
}
See the Dependency Property Value Precedence article on MSDN for more details.