ReactiveUI在视图模型中将枚举属性绑定到颜色属性

时间:2019-03-29 19:57:53

标签: c# reactiveui

我正在开始我的第一个反应式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 个答案:

答案 0 :(得分:1)

更好的方法是在WhenAnyValue上使用OneWayBind运算符

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;
    }
}