I have not checked all of your posted code for correctness but here is the issue with your constructors: you must call InitializeComponent
(and it must happen before you access any named elements)
here is a version with a fix:
public SpecialNumberOption()
{
InitializeComponent();
this.applyStyle();
}
public SpecialNumberOption(SurveyQuestionOption option) : this () //will call the empty default constructor
{
this.buttonMe.Content = option.Text;
this.subText.Text = option.SubText;
}
Remark: I consider it bad style for controls to have more than the empty default constructor. The parameters should be set via a property setter. It enable you and whoever will be reusing your control to use and parameterize it in xaml.