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"
+ }
+ }
+ }
+}