Привязка интерфейса непосредственно к модели API - PullRequest
0 голосов
/ 13 июня 2019

Связывание работает без 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
}

1 Ответ

1 голос
/ 14 июня 2019

Является ли плохой практикой привязывать мой пользовательский интерфейс к модели HTTP API напрямую, не создавая отдельную модель представления?

Нет, если вы и сможете использовать класс модели точно так же, как и в вашем приложении с графическим интерфейсом. Тогда нет никакой причины создавать оболочку модели представления просто ради этого, так как у вас все равно есть зависимость от API.

Всегда ли предпочтительнее создать отдельную модель вида, отобразить ее и затем привязать к ней?

Нет, не всегда. Если вы, например, должны были отображать пару сотен или тысяч ответов на события в виде сетки, вы не хотите вызывать конвертер для каждого элемента. В этом случае было бы лучше обернуть модель и связать ее непосредственно со свойством Brush, дружественным для пользовательского интерфейса, или аналогичным. Так что все зависит от ваших требований. Но привязка непосредственно к объектам домена не всегда плохая идея.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...