From c2d8e12fe44a6873f12a2ee0cda3acd862b68504 Mon Sep 17 00:00:00 2001 From: enisn Date: Fri, 18 Feb 2022 13:50:04 +0300 Subject: [PATCH 1/2] Updating PageLayout to notify when one of its members changed --- .../Layout/PageHeader.razor.cs | 6 +++-- .../Layout/PageLayout.cs | 23 +++++++++++++++---- 2 files changed, 22 insertions(+), 7 deletions(-) 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 From a733fc27eb222746caa3a43b53239bfe0c9e226f Mon Sep 17 00:00:00 2001 From: enisn Date: Fri, 18 Feb 2022 14:05:19 +0300 Subject: [PATCH 2/2] Replace AddRange with foreach --- .../Layout/PageHeader.razor.cs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) 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 e69bd7437a..f38f433fa3 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 @@ -55,7 +55,10 @@ public partial class PageHeader : ComponentBase if (!Options.Value.RenderToolbar) { PageLayout.ToolbarItems.Clear(); - PageLayout.ToolbarItems.AddRange(toolbarItems); + foreach (var item in toolbarItems) + { + PageLayout.ToolbarItems.Add(item); + } return; }