Browse Source

Merge pull request #11624 from abpframework/enisn/pagelayout-improvements

Updating PageLayout to notify when one of its members changed
pull/11628/head
Halil İbrahim Kalkan 5 years ago
committed by GitHub
parent
commit
67440634b9
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 11
      framework/src/Volo.Abp.AspNetCore.Components.Web.Theming/Layout/PageHeader.razor.cs
  2. 23
      framework/src/Volo.Abp.AspNetCore.Components.Web.Theming/Layout/PageLayout.cs

11
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<BreadcrumbItem> BreadcrumbItems {
get => PageLayout.BreadcrumbItems;
set => PageLayout.BreadcrumbItems = value;
get => PageLayout.BreadcrumbItems.ToList();
set => PageLayout.BreadcrumbItems = new ObservableCollection<BreadcrumbItem>(value);
}
[Parameter]
@ -53,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;
}

23
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<BreadcrumbItem> BreadcrumbItems { get; set; } = new();
public virtual List<BreadcrumbItem> BreadcrumbItems { get; set; } = new();
public virtual ObservableCollection<PageToolbarItem> ToolbarItems { get; set; } = new();
public virtual List<PageToolbarItem> ToolbarItems { get; set; } = new();
public event PropertyChangedEventHandler PropertyChanged;
}
Loading…
Cancel
Save