diff --git a/framework/src/Volo.Abp.AspNetCore.Components.Web.Theming/Layout/PageHeader.razor.cs b/framework/src/Volo.Abp.AspNetCore.Components.Web.Theming/Layout/PageHeader.razor.cs index 10fbc3bfb7..e69bd7437a 100644 --- a/framework/src/Volo.Abp.AspNetCore.Components.Web.Theming/Layout/PageHeader.razor.cs +++ b/framework/src/Volo.Abp.AspNetCore.Components.Web.Theming/Layout/PageHeader.razor.cs @@ -4,6 +4,8 @@ using System.Collections.Generic; using System.Threading.Tasks; using Volo.Abp.AspNetCore.Components.Web.Theming.PageToolbars; using Volo.Abp.BlazoriseUI; +using System.Linq; +using System.Collections.ObjectModel; namespace Volo.Abp.AspNetCore.Components.Web.Theming.Layout; @@ -30,8 +32,8 @@ public partial class PageHeader : ComponentBase [Parameter] // TODO: Consider removing this property in future and use only PageLayout. public List BreadcrumbItems { - get => PageLayout.BreadcrumbItems; - set => PageLayout.BreadcrumbItems = value; + get => PageLayout.BreadcrumbItems.ToList(); + set => PageLayout.BreadcrumbItems = new ObservableCollection(value); } [Parameter] diff --git a/framework/src/Volo.Abp.AspNetCore.Components.Web.Theming/Layout/PageLayout.cs b/framework/src/Volo.Abp.AspNetCore.Components.Web.Theming/Layout/PageLayout.cs index 9c0d89f70a..618445bd83 100644 --- a/framework/src/Volo.Abp.AspNetCore.Components.Web.Theming/Layout/PageLayout.cs +++ b/framework/src/Volo.Abp.AspNetCore.Components.Web.Theming/Layout/PageLayout.cs @@ -1,16 +1,29 @@ -using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.ComponentModel; using Volo.Abp.AspNetCore.Components.Web.Theming.PageToolbars; using Volo.Abp.BlazoriseUI; using Volo.Abp.DependencyInjection; namespace Volo.Abp.AspNetCore.Components.Web.Theming.Layout; -public class PageLayout : IScopedDependency +public class PageLayout : IScopedDependency, INotifyPropertyChanged { + private string title; + // TODO: Consider using this property for setting Page Title too. - public virtual string Title { get; set; } + public virtual string Title + { + get => title; + set + { + title = value; + PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(Title))); + } + } + + public virtual ObservableCollection BreadcrumbItems { get; set; } = new(); - public virtual List BreadcrumbItems { get; set; } = new(); + public virtual ObservableCollection ToolbarItems { get; set; } = new(); - public virtual List ToolbarItems { get; set; } = new(); + public event PropertyChangedEventHandler PropertyChanged; } \ No newline at end of file