Простите за глупый вопрос, но что я делаю не так?
Есть форма WPF, у нее ViewModel, настроен binding на свойства, в set'тере свойств событие оповещения вызывается выше, в унаследованных методах (использую GalaSoft.MvvmLight.ViewModelBase).
public abstract class QuestionnairesBaseViewModel : ViewModelBase
{
// ...
protected void SetField<T>(ref T field, T value)
{
try
{
if (EqualityComparer<T>.Default.Equals(field, value)) return;
field = value;
RaisePropertyChanged();
}
catch { field = default(T); }
}
// ...
}
public class FormLViewModel : QuestionnairesBaseViewModel, IQuestionnaireViewModel, IDataErrorInfo
{
// ...
private string _birthPlace;
public string BirthPlace
{
get => _birthPlace;
set => SetField(ref _birthPlace, value);
}
// ...
}
Если я устанавливаю значение свойства в конструкторе VM, то окно открывается и соответствующий контрол отображает установленное значение.
Но если я уже в процессе работы устанавливаю в одном из методов VM значение свойства - то оно устанавливается (отладчиком проверял), событие вызывается, но контрол в окне свой вид не меняет и измененное значение не отображает.
Это же базовый режим работы в модели MVVM - обработку данных делать во VM. Но из-за этого мне уже не раз приходилось устанавливать значения контролов прямо в файле присоединенного кода формы. Что удивительно - при этом все прекрасно сразу отображается и состояние VM тоже меняется. Но очень, мягко говоря, "так себе"...
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Метод show вызывается 2 разаОдин раз когда $message равен NULL и второй раз после того как через setMessage передан объект класса HelloMessage
Есть расчетные модули написанные на Java под Android