For everyone interested, don't know whether it's the most correct way or not...but it works:
Defined a new component SAMMenuItem:
<RadzenPanelMenuItem Text=@Category.Name Image=@Category.Icon Style="color:black;font-size:large;font-weight:100"
                    ExpandedChanged=@(() => @ExpandedToggle.InvokeAsync(Category)) Expanded=@Expanded>
   @ChildContent
</RadzenPanelMenuItem>
@code {
   [Parameter]
   public SAMCategory Category { get; set; }
   [Parameter]
   public bool Expanded { 
       get
       {            
           return Category.Expanded;
       } 
       set
       {
           Category.Expanded = value;
       } 
   }
   [Parameter]
   public RenderFragment ChildContent { get; set; }
   [Parameter]
   public EventCallback<SAMCategory> ExpandedToggle { get; set; }
}
Call the component in a cycle in the MainLayout.razor:
       <RadzenPanelMenu Style="background-color:#EED484">
           <RadzenPanelMenuItem Text="Home" Icon="home" Style="color:black;font-size:large;font-weight:100" />
           @foreach (SAMCategory category in categoriesList)
           {
               <SamMenuItem Category="@category" ExpandedToggle="@ToggleMenu">
                   @foreach (SAMApp app in category.Apps)
                   {
                       <RadzenPanelMenuItem Text=@app.Name Image=@app.Icon />
                   }
               </SamMenuItem>
           }
       </RadzenPanelMenu>
Defined the ToggleMenu with parameter "category" in MainLayout.razor:
   private void ToggleMenu(SAMCategory category)
   {
       foreach (SAMCategory c in categoriesList)
       {
           if (c.Name != category.Name)
           {
               c.Expanded = false;
           }
           category.Expanded = true;
       }
   }
Now when a menu expanded the others collapse as expected