Простите за глупый вопрос, но что я делаю не так?
Есть форма 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 тоже меняется. Но очень, мягко говоря, "так себе"...
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Метод show вызывается 2 разаОдин раз когда $message равен NULL и второй раз после того как через setMessage передан объект класса HelloMessage
Есть расчетные модули написанные на Java под Android