The custom GroupDescription in ScheduleView is not working.

0 Answers 3 Views
ScheduleView
Jeffrey
Top achievements
Rank 1
Iron
Jeffrey asked on 29 May 2025, 01:44 AM | edited on 29 May 2025, 01:55 AM

I want to customize GroupDescription to meet our needs. Here is the `EquipmentGroupDescription` class: public class EquipmentGroupDescription : GroupDescription { public override object GroupNameFromItem(object item, int level, CultureInfo culture) { var experiment = item as Experiment; if (experiment == null) return null; return experiment.EquipmentID; } } The `Experiment` class inherits from `Appointment`: public class Experiment : Appointment { public string ID { get; set; } public string Name { get; set; } public string EquipmentName { get; set; } public Guid EquipmentID { get; set; } } I need to group `Experiment` by `EquipmentID` and `DateTime`. Here is the XAML: <telerik:RadScheduleView x:Name="scheduler" ActiveViewDefinitionIndex="1" FirstVisibleTime="12:00" GroupDescriptionsSource="{Binding CustomGroupDescriptions}" AppointmentsSource="{Binding Experiments}"> <telerik:RadScheduleView.GroupHeaderContentTemplate> <DataTemplate> <TextBlock Text="{Binding}" Foreground="White" FontWeight="Bold"/> </DataTemplate> </telerik:RadScheduleView.GroupHeaderContentTemplate> <telerik:RadScheduleView.AppointmentItemContentTemplate> <DataTemplate> <StackPanel> <TextBlock Text="{Binding Appointment.Name}" FontWeight="Bold" Foreground="White"/> <TextBlock Text="{Binding Appointment.EquipmentName}" Foreground="#DDD"/> </StackPanel> </DataTemplate> </telerik:RadScheduleView.AppointmentItemContentTemplate> <telerik:RadScheduleView.ViewDefinitions> <telerik:DayViewDefinition /> <telerik:WeekViewDefinition /> <telerik:MonthViewDefinition /> <telerik:TimelineViewDefinition DayStartTime="08:00" /> </telerik:RadScheduleView.ViewDefinitions> </telerik:RadScheduleView> ``` In the ViewModel,

private readonly Guid pivot1 = Guid.NewGuid();
private readonly Guid pivot2 = Guid.NewGuid();

 

var items = LoadAppointmentsSource();
Experiments = items.ToObservableCollection();
CustomGroupDescriptions = new ObservableCollection<EquipmentGroupDescription>
    {
        new EquipmentGroupDescription()
    };

 

private IEnumerable<Experiment> LoadAppointmentsSource()
{
    var items = new List<Experiment>
    {
        new Experiment()
        {
            Subject="1",
            Name="K Experiment 1",
            EquipmentID=pivot1,
            EquipmentName="Pivot",
            Start=DateTime.Today.AddDays(1).AddHours(12),
            End=DateTime.Today.AddDays(1).AddHours(13)
        },
        new Experiment()
        {
            Subject="2",
            Name="K Experiment 2",
            EquipmentID=pivot2,
            EquipmentName="Pivot",
            Start=DateTime.Today.AddDays(1).AddHours(12),
            End=DateTime.Today.AddDays(1).AddHours(13)
        },
    };
    var firstDate = items.Min(new Func<Experiment, DateTime>(p => p.Start.Date));

    var firstDay = CultureInfo.CurrentCulture.DateTimeFormat.FirstDayOfWeek;
    var dayOfWeekNumber = (int)DateTime.Today.DayOfWeek == 0 ? 7 : (int)DateTime.Today.DayOfWeek;
    var firstDayOfCurrentWeek = DateTime.Today.Subtract(TimeSpan.FromDays(dayOfWeekNumber - (int)firstDay));

    var offset = firstDayOfCurrentWeek - firstDate;

    foreach (var item in items)
    {
        item.Start += offset;
        item.End += offset;
    }

    return items;
}

private ObservableCollection<Experiment> experiments;

public ObservableCollection<Experiment> Experiments
{
    get { return experiments; }
    set
    {
        experiments = value;
        OnPropertyChanged();
    }
}

private ObservableCollection<EquipmentGroupDescription> customGroupDescriptions;

public ObservableCollection<EquipmentGroupDescription> CustomGroupDescriptions
{
    get { return customGroupDescriptions; }
    set
    {
        customGroupDescriptions = value;
        OnPropertyChanged();
    }
}

the Telerik version used is 2022.3.912.310. During debugging, I found that `GroupDescriptionsSource`

contains two objects: `EquipmentGroupDescription` and `DatetimeGroupDescription`.

However, `EquipmentGroupDescription` has 0 items in `GroupNames`, and its `GroupNameFromItem`

method is never called.

No answers yet. Maybe you can help?

Tags
ScheduleView
Asked by
Jeffrey
Top achievements
Rank 1
Iron
Share this question
or