Любые изменения в пользовательском интерфейсе должны выполняться потоком Dispatcher
.Хорошей практикой, если у вас есть другой поток, постоянно меняющий модель представления, это заставлять установщики свойств использовать поток диспетчера.В этом случае вы убедитесь, что не измените элемент пользовательского интерфейса в другом потоке.
Попробуйте:
public string Property
{
set
{
Dispatcher.BeginInvoke(()=> _property = value ) ;
OnPropertyChanged("Property");
}
get
{
return _property;
}
}