По-видимому, нет способа повторно проверить ModelState после изменения значения некоторого ключа. IsValid остается ложным, потому что установка нового значения для некоторого ключа не вызывает повторную проверку.
Решение состоит в том, чтобы сначала удалить ключ, который вызвал IsValid, чтобы быть ложным, воссоздать его и присвоить ему значение. Когда вы сделаете это, ModelState автоматически выполнит повторную проверку и, если все в порядке, IsValid вернет true.
Как это:
bindingContext.ModelState.Remove("Slug");
bindingContext.ModelState.Add("Slug", new ModelState());
bindingContext.ModelState.SetModelValue("Slug", new ValueProviderResult(obj.Slug, obj.Slug, null));