public TimetableCellRenderProperties(Func <ArrDep, TimeSpan> time, Station sta, bool arrival, BaseTimetableDataElement data)
        {
            if (fn == null || fb == null || errorColor == null)
            {
                fb         = SystemFonts.Bold();
                fn         = SystemFonts.Default();
                errorColor = new Color(Colors.Red, 0.4f);
            }

            Background = Colors.White;
            Font       = fn;

            var ardp = data.ArrDeps[sta];

            if (!data.HasError(sta, arrival))
            {
                Text = time(ardp) != default ? time(ardp).ToShortTimeString() : "";
            }
            else
            {
                Text = data.GetErrorText(sta, arrival);
            }

            var first = data.IsFirst(sta);

            if ((!arrival && data.IsLast(sta)) || (arrival && first))
            {
                ReadOnly   = true;
                Background = Colors.DarkGray;
            }
            else if (arrival ^ first)
            {
                if (first && ardp.TrapeztafelHalt)
                {
                    throw new Exception("Die erste Station darf keinen Trapeztafelhalt beinhalten!");
                }

                Background = ardp.TrapeztafelHalt ? Colors.LightGrey : Colors.White;
                if (ardp.Zuglaufmeldung != null && ardp.Zuglaufmeldung != "")
                {
                    Font = fb;
                }
            }

            if (data.HasError(sta, arrival))
            {
                Background = errorColor;
            }
        }