MSDN documentation specifies that when defining a custom control, one should define a control contract. From that page, it is so defined:
[TemplatePart(Name = "UpButtonElement", Type = typeof(RepeatButton))]
[TemplatePart(Name = "DownButtonElement", Type = typeof(RepeatButton))]
[TemplateVisualState(Name = "Positive", GroupName = "ValueStates")]
//...rest cut for length
public class NumericUpDown : Control
//...
I cannot find anywhere in the documentation where it specifies how to discover this contract. If I am overriding the control template, how do I know that I've handled all VisualStates, and that I've implemented all Parts?
This answer links to the same documentation, and provides a method for doing this with reflection, but that is not helpful at design time. Am I truly limited to essentially writing a console app that dumps the reflected attributes, or consulting the documentation (which may not be available for 3rd party controls)?