mirror of
https://github.com/denglihong2007/CRSim
synced 2026-08-11 20:29:45 +08:00
@@ -19,6 +19,7 @@ namespace CRSim.ScreenSimulator.Converters
|
||||
public List<SolidColorBrush> WaitingColorList { get; set; } = new();
|
||||
public SolidColorBrush ArrivedText { get; set; } = new(Colors.LightGreen);
|
||||
public SolidColorBrush ArrivingText { get; set; } = new(Colors.White);
|
||||
public SolidColorBrush ArrivingLateText { get; set; } = new(Colors.Red);
|
||||
public SolidColorBrush WaitingColor { get; set; } = new(Colors.White);
|
||||
public SolidColorBrush CheckInColor { get; set; } = new(Colors.LightGreen);
|
||||
public SolidColorBrush StopCheckInColor { get; set; } = new(Colors.Red);
|
||||
@@ -34,8 +35,13 @@ namespace CRSim.ScreenSimulator.Converters
|
||||
// 到达模式或缺少关键数据
|
||||
if (DisplayMode == "Arrive" || (values.Length > 1 && values[1] == null))
|
||||
{
|
||||
if (values[0] is DateTime arriveTime)
|
||||
return now >= arriveTime ? ArrivedText : ArrivingText;
|
||||
if (values[0] is DateTime arriveTime){
|
||||
if (values.Length > 1 && values[1] is TimeSpan state){
|
||||
if (state.TotalMinutes > 0) return ArrivingLateText;
|
||||
return now >= arriveTime ? ArrivedText : ArrivingText;
|
||||
}
|
||||
return now >= arriveTime? ArrivedText : ArrivingText;
|
||||
}
|
||||
return new SolidColorBrush(Colors.Transparent);
|
||||
}
|
||||
|
||||
@@ -82,7 +88,19 @@ namespace CRSim.ScreenSimulator.Converters
|
||||
return StopCheckInColor; // 晚点
|
||||
}
|
||||
}
|
||||
public static string ToHourMinuteString(TimeSpan ts)
|
||||
{
|
||||
int totalHours = (int)ts.TotalHours; // 可以超过24
|
||||
int minutes = ts.Minutes;
|
||||
|
||||
if (totalHours > 0 && minutes > 0)
|
||||
return $"{totalHours}小时{minutes}分钟";
|
||||
if (totalHours > 0)
|
||||
return $"{totalHours}小时";
|
||||
if (minutes > 0)
|
||||
return $"{minutes}分钟";
|
||||
return "0分钟"; // 特殊情况,完全为0
|
||||
}
|
||||
public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture) => null;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -13,6 +13,8 @@ namespace CRSim.ScreenSimulator.Converters
|
||||
public string DisplayMode { get; set; } = "Normal";
|
||||
public string ArrivedText { get; set; } = "列车已到达";
|
||||
public string ArrivingText { get; set; } = "正点";
|
||||
public string ArrivedLateText { get; set; } = "晚点{0}到达";
|
||||
public string ArrivingLateText { get; set; } = "预计晚点{0}";
|
||||
public string WaitingText { get; set; } = "候车";
|
||||
public string CheckInText { get; set; } = "正在检票";
|
||||
public string StopCheckInText { get; set; } = "停止检票";
|
||||
@@ -28,8 +30,22 @@ namespace CRSim.ScreenSimulator.Converters
|
||||
// 到达模式或关键数据缺失
|
||||
if (DisplayMode == "Arrive" || (values.Length > 1 && values[1] == null))
|
||||
{
|
||||
if (values[0] is DateTime arriveTime)
|
||||
return now >= arriveTime ? ArrivedText : ArrivingText;
|
||||
|
||||
if (values[0] is DateTime arriveTime){
|
||||
if (values[2] is TimeSpan state){
|
||||
// arriveTime += TimeSpan.FromMinutes(state.TotalMinutes);
|
||||
if (now >= arriveTime){
|
||||
if (state.TotalMinutes > 0)
|
||||
return string.Format(ArrivedLateText, ToHourMinuteString(state));
|
||||
return ArrivedText;
|
||||
}else{
|
||||
if (state.TotalMinutes > 0)
|
||||
return string.Format(ArrivingLateText, ToHourMinuteString(state));
|
||||
return ArrivingText;
|
||||
}
|
||||
}
|
||||
return now >= arriveTime? ArrivedText : ArrivingText;
|
||||
}
|
||||
return string.Empty;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user