ReactiveUI Связывает свойство Enum со свойством Color в модели представления - PullRequest
0 голосов
/ 29 марта 2019

Я начинаю свой первый проект Reactive UI. У меня есть перечисление, и я хочу сопоставить определенный цвет с определенным значением перечисления. Как я могу сделать это с помощью Reactive UI? Поэтому при изменении состояния TextColor изменяется.

Скажи, что я хотел отобразить

  • Бег -> Зеленый
  • Холостой ход -> Оранжевый
  • Ошибка -> Красный
  • Руководство -> Синий

Вот моя модель просмотра

public enum Status { Running, Idle, Faulted, Manual}

public class MachineStatusViewModel : ReactiveObject
{
    public string Name;
    public Status Status;
    public System.Drawing.Color TextColor;

    public MachineStatusViewModel()
    {           

    }
}

1 Ответ

1 голос
/ 30 марта 2019

Лучше всего использовать оператор OneWayBind вместо WhenAnyValue

this.OneWayBind(this.ViewModel, vm => vm.Status, view => view.TextColor, GetColor);

private Color GetColor(Status status)
{
    switch (status)
    {
        case Status.Running:
            return Color.Green;
        case Status.Idle:
            return Color.Orange;
        case Status.Faulted:
            return Color.Red;
        case Status.Manual:
            return Color.Blue;
    }
}
...