Wenn du nur so Sachen wie Farbe (Vorder-/Hintergrund), Text, etc aus dem Programm verändern willst, kannst du die ganze Erweiterung des Labels entfernen.
Vorab, das MVVM-Pattern klingt recht einfach und einleuchtend, aber bis man es wirklich verstanden hat, dauert es doch seine Zeit. Zwei Grundpfeiler des Patterns:
- Dynamische Inhalte (auch Farben und Eigenschaften) der View werden per Databinding aus dem ViewModel eingebunden
- Aktionen in der View lösen einen Command im ViewModel aus

Wenn das noch zu sehr nach Bahnhof klingt, mach dich unbedingt mit der Theorie des Patterns vertraut.
Zu deinem Problem:
Ich würde das SPS-Label nicht vom Label ableiten und erweitern, wie man es in anderen Sprachen macht. Es braucht wie im oberen Post erwähnt, viel viel weniger.
- Überall, wo dieses Label in der View verwendet wird, erstellst du ein ganz normales Label und bindest die zu verändernden Eigenschaften per Databinding an Properties deines ViewModels.
- Im ViewModel musst du du diese Properties hinzufügen und sie bei einer Änderung des Wertes jeweils einen Event auslösen lassen, damit die View benachrichtigt wird, dass die jeweilige Eigenschaft geändert wurde.
Wenn du MVVM-Light verwendest und im ViewModel "using GalaSoft.MvvmLight;" einfügst, dann steht dir die Klasse "ObservableObject" zur Verfügung. Diese stellt dir das Event "RaisePropertyChanged" zur Verfügung