Связывание работает без INotifyPropertyChanged, почему?
Это плохая практика - привязывать мой пользовательский интерфейс к модели HTTP API напрямую, не создавая отдельную модель представления?
Единственным недостатком является то, что он не реализует INotifyPropertyChanged
, поэтому пользовательский интерфейс не будет обновляться, когда вы изменяете свойство из своего кода - но что, если вам не нужно обновлять свое свойство из своего кода?
Это моя модель ответа API:
public class EventResponseModel
{
public int Id { get; set; }
public string Subject { get; set; }
public string Description { get; set; }
public DateTime StartTime { get; set; }
public DateTime EndTime { get; set; }
public string ArgbColor { get; set; } // should bind to Brush
public Location Location { get; set; }
public IEnumerable<Person> Attendees { get; set; }
}
В приведенной выше модели у меня есть ArgbColor
, который должен быть привязан к Brush
в XAML. Я мог бы, вероятно, создать StringToBrushConverter : IValueConverter
, чтобы заставить его работать вместо создания отдельной модели представления.
Всегда ли предпочтительнее создать отдельную модель вида, отобразить ее и затем привязать к ней?
Для редактирования у меня все равно будет отдельная виртуальная машина и я буду использовать такую композицию, как:
public class EventVM
{
public EventResponseModel EditedEvent { get; set; }
// available locations etc., commands for saving
}