Color(Xamarin.Forms)を返す関数に奇妙な問題があります。私の考えは、異なる背景を持つボックスをAppointmentStatus
に応じて表示することです。私は、この関数を呼び出した場合rtn
は私が期待した色を持っていますが、画面上で、私は任意の色を見ることができないこのXamarinフォーム:Xamarin.Forms.Colorを返す関数で異常な動作が発生する
public static Color ColorForStatus(this AppointmentStatus status)
{
Color rtn = Color.Transparent;
switch (status)
{
case AppointmentStatus.Active:
rtn = Color.FromHex("#654BE");
break;
case AppointmentStatus.Cancelled:
rtn = Color.FromHex("#E14063");
break;
case AppointmentStatus.Completed:
rtn = Color.FromHex("#C4E7EE");
break;
case AppointmentStatus.Hold:
rtn = Color.FromHex("#84CEDD");
break;
case AppointmentStatus.InProgress:
rtn = Color.FromHex("#B1D1DE");
break;
case AppointmentStatus.Paused:
rtn = Color.FromHex("#F1E19E");
break;
default:
rtn = Color.Transparent;
break;
}
return rtn;
}
のような列挙型の拡張を作成しました。それを修正しようとするには、その後、私は同様のコード
public static class ColourHelpers
{
/// <summary>
/// Determine the color for an appointment status
/// </summary>
/// <param name="status">The status.</param>
/// <returns>Color.</returns>
public static Color ColorForStatus(this AppointmentStatus status)
{
Color rtn = Color.Transparent;
switch (status)
{
case AppointmentStatus.Active:
rtn = Color.FromHex("#654BE");
break;
case AppointmentStatus.Cancelled:
rtn = Color.FromHex("#E14063");
break;
case AppointmentStatus.Completed:
rtn = Color.FromHex("#C4E7EE");
break;
case AppointmentStatus.Hold:
rtn = Color.FromHex("#84CEDD");
break;
case AppointmentStatus.InProgress:
rtn = Color.FromHex("#B1D1DE");
break;
case AppointmentStatus.Paused:
rtn = Color.FromHex("#F1E19E");
break;
default:
rtn = Color.Transparent;
break;
}
return rtn;
}
}
と機能を作成し、この場合も結果は同じです。 Visual Studioで値をチェックすると値は正しいように見えますが、関数はunknown identifier
です。イメージを参照してください。メインに、私は同じスイッチを使用している場合は、下の画像に表示できるよう
は、私は、画面内の色を見ることができます。
私はViewModelににこの関数を呼び出します。
public override async void LoadData(string search = "")
{
AppointmentList = new ObservableCollection<Appointment>(
repo.GetAppointments().ToList());
foreach (Appointment app in AppointmentList)
{
// this is working (it's the background of "Work" frame)
switch (app.AppointmentType)
{
case AppointmentType.Quote:
app.BoxColor = Settings.BoxColorQuoteSettings;
break;
default:
app.BoxColor = Settings.BoxColorJobSettings;
break;
}
// they don't work
app.StatusColor = app.Status.StatusColor(); // with extensions
app.StatusColor = ColourHelpers.ColorForStatus(app.Status); // with function
// this is working
app.StatusColor = Settings.BoxColorJobSettings;
}
}
UPDATE 私はDebug window
にapp.StatusColor
の値を印刷し、私が期待する結果を参照してください。
事前にありがとうございます。
メイン機能全体のコードを投稿できますか。どのように呼び出すことができますか? –
主な機能はかなり複雑です。私はそこにViewModelを持っています。私はそれを私が呼んでいる部分のコードだけを公開します。 – Enrico
'Debug.WriteLine($" Color {ColourHelpers.ColorForStatus(app.Status)} ");'を追加し、それが何を表示するかを確認します。私はそれが「透明」を返すと思います。 –