Hallo und willkommen im C#-Forum,
alle UI-Elemente müssen im UI-Thread erzeugt und verwaltet werden. Für WPF gibt es dafür die Methode
Dispatcher.Invoke, um aus einem anderen Thread heraus die Aktion in den Main UI-Thread zu verlagern, s. z.B. auch
myCSharp.de-[FAQ] Controls von Thread aktualisieren lassen (Control.Invoke/Dispatcher.Invoke).
Was mich jedoch stutzig macht, ist, daß du ein
UserControl mittels MVVM binden willst. Dies ist eigentlich die falsche Vorgehensweise in WPF, da man Daten im ViewModel hält und diese dann an UI-Elemente bindet. Stichworte dazu wären "Data Template" (und evtl. "Control Template") sowie "ICommand".
PS. Deine Signatur ist wohl ein wenig veraltet, oder?