我正在开始我的第一个反应式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()
{
}
}
答案 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;
}
}