diff --git a/.gitignore b/.gitignore index 1c87961..52c59e2 100644 --- a/.gitignore +++ b/.gitignore @@ -49,7 +49,6 @@ BenchmarkDotNet.Artifacts/ project.lock.json project.fragment.lock.json artifacts/ -**/Properties/launchSettings.json *_i.c *_p.c diff --git a/CS/EFCore/CustomViewItem/CustomViewItem.Blazor.Server/Editors/ButtonViewItem/Button.razor b/CS/EFCore/CustomViewItem/CustomViewItem.Blazor.Server/Editors/ButtonViewItem/Button.razor new file mode 100644 index 0000000..aa8d5e9 --- /dev/null +++ b/CS/EFCore/CustomViewItem/CustomViewItem.Blazor.Server/Editors/ButtonViewItem/Button.razor @@ -0,0 +1,10 @@ +@namespace CustomViewItem.Blazor.Server.Editors.ButtonViewItem + + + +@code { + [Parameter] + public string Text { get; set; } + [Parameter] + public EventCallback Click { get; set; } +} diff --git a/CS/EFCore/CustomViewItem/CustomViewItem.Blazor.Server/Editors/ButtonViewItem/ButtonDetailViewItemBlazor.cs b/CS/EFCore/CustomViewItem/CustomViewItem.Blazor.Server/Editors/ButtonViewItem/ButtonDetailViewItemBlazor.cs index 6cdf9ed..0bab011 100644 --- a/CS/EFCore/CustomViewItem/CustomViewItem.Blazor.Server/Editors/ButtonViewItem/ButtonDetailViewItemBlazor.cs +++ b/CS/EFCore/CustomViewItem/CustomViewItem.Blazor.Server/Editors/ButtonViewItem/ButtonDetailViewItemBlazor.cs @@ -1,45 +1,42 @@ -using System; -using DevExpress.ExpressApp; +using DevExpress.ExpressApp; using DevExpress.ExpressApp.Blazor; +using DevExpress.ExpressApp.Blazor.Components; +using DevExpress.ExpressApp.Blazor.Components.Models; using DevExpress.ExpressApp.Editors; using DevExpress.ExpressApp.Model; using Microsoft.AspNetCore.Components; +using Microsoft.AspNetCore.Components.Web; -using DevExpress.ExpressApp.Blazor.Components; +namespace CustomViewItem.Blazor.Server.Editors.ButtonViewItem; + +public interface IModelButtonDetailViewItemBlazor : IModelViewItem; -namespace MySolution.Module.Blazor { - public interface IModelButtonDetailViewItemBlazor : IModelViewItem { } +[ViewItem(typeof(IModelButtonDetailViewItemBlazor))] +public class ButtonDetailViewItemBlazor(IModelViewItem model, Type objectType) : + ViewItem(objectType, model.Id), + IComponentContentHolder, + IComplexViewItem +{ + public ButtonModel ComponentModel => componentModel; + + private ButtonModel componentModel; + private XafApplication application; - [ViewItem(typeof(IModelButtonDetailViewItemBlazor))] - public class ButtonDetailViewItemBlazor : ViewItem, IComplexViewItem { - public class ButtonHolder : IComponentContentHolder { - public ButtonHolder(ButtonModel componentModel) { - ComponentModel = componentModel; - } - public ButtonModel ComponentModel { get; } - RenderFragment IComponentContentHolder.ComponentContent => ComponentModelObserver.Create(ComponentModel, ButtonRenderer.Create(ComponentModel)); - } - private XafApplication application; - public ButtonDetailViewItemBlazor(IModelViewItem model, Type objectType) : base(objectType, model.Id) { } - void IComplexViewItem.Setup(IObjectSpace objectSpace, XafApplication application) { - this.application = application; - } - protected override object CreateControlCore() => new ButtonHolder(new ButtonModel()); - protected override void OnControlCreated() { - if (Control is ButtonHolder holder) { - holder.ComponentModel.Text = "Click me!"; - holder.ComponentModel.Click += ComponentModel_Click; - } - base.OnControlCreated(); - } - public override void BreakLinksToControl(bool unwireEventsOnly) { - if (Control is ButtonHolder holder) { - holder.ComponentModel.Click -= ComponentModel_Click; - } - base.BreakLinksToControl(unwireEventsOnly); - } - private void ComponentModel_Click(object sender, EventArgs e) { - application.ShowViewStrategy.ShowMessage("Action is executed!"); - } + RenderFragment IComponentContentHolder.ComponentContent => + ComponentModelObserver.Create(componentModel, componentModel.GetComponentContent()); + void IComplexViewItem.Setup(IObjectSpace objectSpace, XafApplication application) { + this.application = application; + } + + protected override object CreateControlCore() { + componentModel = new ButtonModel + { + Text = "Click me!", + Click = EventCallback.Factory.Create(this, ComponentModel_Click), + }; + return componentModel; + } + private void ComponentModel_Click() { + application.ShowViewStrategy.ShowMessage("Action is executed!"); } } diff --git a/CS/EFCore/CustomViewItem/CustomViewItem.Blazor.Server/Editors/ButtonViewItem/ButtonModel.cs b/CS/EFCore/CustomViewItem/CustomViewItem.Blazor.Server/Editors/ButtonViewItem/ButtonModel.cs index dc5e1b6..9516bcd 100644 --- a/CS/EFCore/CustomViewItem/CustomViewItem.Blazor.Server/Editors/ButtonViewItem/ButtonModel.cs +++ b/CS/EFCore/CustomViewItem/CustomViewItem.Blazor.Server/Editors/ButtonViewItem/ButtonModel.cs @@ -1,15 +1,18 @@ -using System; -using DevExpress.ExpressApp.Blazor.Components.Models; +using DevExpress.ExpressApp.Blazor.Components.Models; +using Microsoft.AspNetCore.Components; +using Microsoft.AspNetCore.Components.Web; -namespace MySolution.Module.Blazor { - public class ButtonModel : ComponentModelBase { - public string Text { - get => GetPropertyValue(); - set => SetPropertyValue(value); - } - public void ClickFromUI() { - Click?.Invoke(this, EventArgs.Empty); - } - public event EventHandler Click; +namespace CustomViewItem.Blazor.Server.Editors.ButtonViewItem; + +public class ButtonModel : ComponentModelBase { + public string Text { + get => GetPropertyValue(); + set => SetPropertyValue(value); + } + public EventCallback Click { + get => GetPropertyValue>(); + set => SetPropertyValue(value); } + + public override Type ComponentType => typeof(Button); } diff --git a/CS/EFCore/CustomViewItem/CustomViewItem.Blazor.Server/Editors/ButtonViewItem/ButtonRenderer.razor b/CS/EFCore/CustomViewItem/CustomViewItem.Blazor.Server/Editors/ButtonViewItem/ButtonRenderer.razor deleted file mode 100644 index 18d7ae7..0000000 --- a/CS/EFCore/CustomViewItem/CustomViewItem.Blazor.Server/Editors/ButtonViewItem/ButtonRenderer.razor +++ /dev/null @@ -1,11 +0,0 @@ -@using DevExpress.Blazor -@namespace MySolution.Module.Blazor - - ComponentModel.ClickFromUI()) /> - -@code { - [Parameter] - public ButtonModel ComponentModel { get; set; } - public static RenderFragment Create(ButtonModel componentModel) => - @; -} diff --git a/CS/EFCore/CustomViewItem/CustomViewItem.Blazor.Server/Properties/launchSettings.json b/CS/EFCore/CustomViewItem/CustomViewItem.Blazor.Server/Properties/launchSettings.json new file mode 100644 index 0000000..113ddee --- /dev/null +++ b/CS/EFCore/CustomViewItem/CustomViewItem.Blazor.Server/Properties/launchSettings.json @@ -0,0 +1,12 @@ +{ + "profiles": { + "CustomViewItem.Blazor.Server": { + "commandName": "Project", + "launchBrowser": true, + "applicationUrl": "https://localhost:5001;http://localhost:5000", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + } + } +} diff --git a/CS/XPO/CustomViewItemXPO/CustomViewItemXPO.Blazor.Server/CustomViewItemXPO.Blazor.Server.csproj b/CS/XPO/CustomViewItemXPO/CustomViewItemXPO.Blazor.Server/CustomViewItemXPO.Blazor.Server.csproj index f37b948..08928db 100644 --- a/CS/XPO/CustomViewItemXPO/CustomViewItemXPO.Blazor.Server/CustomViewItemXPO.Blazor.Server.csproj +++ b/CS/XPO/CustomViewItemXPO/CustomViewItemXPO.Blazor.Server/CustomViewItemXPO.Blazor.Server.csproj @@ -17,9 +17,6 @@ Always - - - diff --git a/CS/XPO/CustomViewItemXPO/CustomViewItemXPO.Blazor.Server/Editors/ButtonViewItem/Button.razor b/CS/XPO/CustomViewItemXPO/CustomViewItemXPO.Blazor.Server/Editors/ButtonViewItem/Button.razor new file mode 100644 index 0000000..67fdf72 --- /dev/null +++ b/CS/XPO/CustomViewItemXPO/CustomViewItemXPO.Blazor.Server/Editors/ButtonViewItem/Button.razor @@ -0,0 +1,10 @@ +@namespace CustomViewItemXPO.Blazor.Server.Editors.ButtonViewItem + + + +@code { + [Parameter] + public string Text { get; set; } + [Parameter] + public EventCallback Click { get; set; } +} diff --git a/CS/XPO/CustomViewItemXPO/CustomViewItemXPO.Blazor.Server/Editors/ButtonViewItem/ButtonDetailViewItemBlazor.cs b/CS/XPO/CustomViewItemXPO/CustomViewItemXPO.Blazor.Server/Editors/ButtonViewItem/ButtonDetailViewItemBlazor.cs index 6cdf9ed..8c604c1 100644 --- a/CS/XPO/CustomViewItemXPO/CustomViewItemXPO.Blazor.Server/Editors/ButtonViewItem/ButtonDetailViewItemBlazor.cs +++ b/CS/XPO/CustomViewItemXPO/CustomViewItemXPO.Blazor.Server/Editors/ButtonViewItem/ButtonDetailViewItemBlazor.cs @@ -1,45 +1,42 @@ -using System; -using DevExpress.ExpressApp; +using DevExpress.ExpressApp; using DevExpress.ExpressApp.Blazor; +using DevExpress.ExpressApp.Blazor.Components; +using DevExpress.ExpressApp.Blazor.Components.Models; using DevExpress.ExpressApp.Editors; using DevExpress.ExpressApp.Model; using Microsoft.AspNetCore.Components; +using Microsoft.AspNetCore.Components.Web; -using DevExpress.ExpressApp.Blazor.Components; +namespace CustomViewItemXPO.Blazor.Server.Editors.ButtonViewItem; + +public interface IModelButtonDetailViewItemBlazor : IModelViewItem; -namespace MySolution.Module.Blazor { - public interface IModelButtonDetailViewItemBlazor : IModelViewItem { } +[ViewItem(typeof(IModelButtonDetailViewItemBlazor))] +public class ButtonDetailViewItemBlazor(IModelViewItem model, Type objectType) : + ViewItem(objectType, model.Id), + IComponentContentHolder, + IComplexViewItem +{ + public ButtonModel ComponentModel => componentModel; + + private ButtonModel componentModel; + private XafApplication application; - [ViewItem(typeof(IModelButtonDetailViewItemBlazor))] - public class ButtonDetailViewItemBlazor : ViewItem, IComplexViewItem { - public class ButtonHolder : IComponentContentHolder { - public ButtonHolder(ButtonModel componentModel) { - ComponentModel = componentModel; - } - public ButtonModel ComponentModel { get; } - RenderFragment IComponentContentHolder.ComponentContent => ComponentModelObserver.Create(ComponentModel, ButtonRenderer.Create(ComponentModel)); - } - private XafApplication application; - public ButtonDetailViewItemBlazor(IModelViewItem model, Type objectType) : base(objectType, model.Id) { } - void IComplexViewItem.Setup(IObjectSpace objectSpace, XafApplication application) { - this.application = application; - } - protected override object CreateControlCore() => new ButtonHolder(new ButtonModel()); - protected override void OnControlCreated() { - if (Control is ButtonHolder holder) { - holder.ComponentModel.Text = "Click me!"; - holder.ComponentModel.Click += ComponentModel_Click; - } - base.OnControlCreated(); - } - public override void BreakLinksToControl(bool unwireEventsOnly) { - if (Control is ButtonHolder holder) { - holder.ComponentModel.Click -= ComponentModel_Click; - } - base.BreakLinksToControl(unwireEventsOnly); - } - private void ComponentModel_Click(object sender, EventArgs e) { - application.ShowViewStrategy.ShowMessage("Action is executed!"); - } + RenderFragment IComponentContentHolder.ComponentContent => + ComponentModelObserver.Create(componentModel, componentModel.GetComponentContent()); + void IComplexViewItem.Setup(IObjectSpace objectSpace, XafApplication application) { + this.application = application; + } + + protected override object CreateControlCore() { + componentModel = new ButtonModel + { + Text = "Click me!", + Click = EventCallback.Factory.Create(this, ComponentModel_Click), + }; + return componentModel; + } + private void ComponentModel_Click() { + application.ShowViewStrategy.ShowMessage("Action is executed!"); } -} +} \ No newline at end of file diff --git a/CS/XPO/CustomViewItemXPO/CustomViewItemXPO.Blazor.Server/Editors/ButtonViewItem/ButtonModel.cs b/CS/XPO/CustomViewItemXPO/CustomViewItemXPO.Blazor.Server/Editors/ButtonViewItem/ButtonModel.cs index dc5e1b6..7804eba 100644 --- a/CS/XPO/CustomViewItemXPO/CustomViewItemXPO.Blazor.Server/Editors/ButtonViewItem/ButtonModel.cs +++ b/CS/XPO/CustomViewItemXPO/CustomViewItemXPO.Blazor.Server/Editors/ButtonViewItem/ButtonModel.cs @@ -1,15 +1,18 @@ -using System; -using DevExpress.ExpressApp.Blazor.Components.Models; +using DevExpress.ExpressApp.Blazor.Components.Models; +using Microsoft.AspNetCore.Components; +using Microsoft.AspNetCore.Components.Web; -namespace MySolution.Module.Blazor { - public class ButtonModel : ComponentModelBase { - public string Text { - get => GetPropertyValue(); - set => SetPropertyValue(value); - } - public void ClickFromUI() { - Click?.Invoke(this, EventArgs.Empty); - } - public event EventHandler Click; +namespace CustomViewItemXPO.Blazor.Server.Editors.ButtonViewItem; + +public class ButtonModel : ComponentModelBase { + public string Text { + get => GetPropertyValue(); + set => SetPropertyValue(value); + } + public EventCallback Click { + get => GetPropertyValue>(); + set => SetPropertyValue(value); } -} + + public override Type ComponentType => typeof(Button); +} \ No newline at end of file diff --git a/CS/XPO/CustomViewItemXPO/CustomViewItemXPO.Blazor.Server/Editors/ButtonViewItem/ButtonRenderer.razor b/CS/XPO/CustomViewItemXPO/CustomViewItemXPO.Blazor.Server/Editors/ButtonViewItem/ButtonRenderer.razor deleted file mode 100644 index 18d7ae7..0000000 --- a/CS/XPO/CustomViewItemXPO/CustomViewItemXPO.Blazor.Server/Editors/ButtonViewItem/ButtonRenderer.razor +++ /dev/null @@ -1,11 +0,0 @@ -@using DevExpress.Blazor -@namespace MySolution.Module.Blazor - - ComponentModel.ClickFromUI()) /> - -@code { - [Parameter] - public ButtonModel ComponentModel { get; set; } - public static RenderFragment Create(ButtonModel componentModel) => - @; -} diff --git a/CS/XPO/CustomViewItemXPO/CustomViewItemXPO.Blazor.Server/Properties/launchSettings.json b/CS/XPO/CustomViewItemXPO/CustomViewItemXPO.Blazor.Server/Properties/launchSettings.json new file mode 100644 index 0000000..5ab04de --- /dev/null +++ b/CS/XPO/CustomViewItemXPO/CustomViewItemXPO.Blazor.Server/Properties/launchSettings.json @@ -0,0 +1,12 @@ +{ + "profiles": { + "CustomViewItemXPO.Blazor.Server": { + "commandName": "Project", + "launchBrowser": true, + "applicationUrl": "https://localhost:5001;http://localhost:5000", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + } + } +}