blazor - 是否有与 WinForm 的 PropertyGrid 等效的 Blazor?
问题描述
我对 WinForms 应用程序的 UI 进行了早该升级,并将使其成为 Blazor 应用程序。旧版应用程序配置是使用 WinForm 的 PropertGrid 进行的。是否有将设置类转换为 Blazor 表单的等效 Blazor 组件或最佳实践?
例如
class MySettings{
public string Name {get;set;}
public int Age {get;set;}
public string Address {get;set;}
// 1000 other settings of int, string, enums etc
}
有没有一种方法可以将 MySettings 呈现为一个漂亮的 Blazor 表单,或者一个 Blazor 组件,无需在 Razor 页面中设计表单即可使用,其中数千个输入绑定到 MySettings 中的每个属性。
这是通过验证进行的长形式方法:
<EditForm Model="@_mySettingsModel" OnValidSubmit="HandleValidSubmit">
<DataAnnotationsValidator />
<ValidationSummary />
<InputText id="name" @bind-Value="_mySettingsModel.Name" />
<InputText id="age" @bind-Value="_mySettingsModel.Age" />
<InputText id="address" @bind-Value="_mySettingsModel.Address" />
<button type="submit">Submit</button>
</EditForm>
@code {
private MySettings _mySettingsModel = new MySettings();
private void HandleValidSubmit()
{
Console.WriteLine("Saving Settings...");
}
}
参考:https ://docs.microsoft.com/en-us/aspnet/core/blazor/forms-validation?view=aspnetcore-3.1
解决方案
WinForms的PropertyGrid比较高级,也支持编辑。Blazor 还没有为此提供官方组件。
下面的 GIF 显示了我在使用中制作的一个组件。它目前支持检查具有嵌套结构的对象的基本场景。您还不能编辑组件的属性。
更新:属性网格现在更加精简并添加了编辑器(由于尚未添加编辑功能本身,它们被转为只读。屏幕截图:)
我在以下 repo url 为 Blazor 制作了一个简单的 PropertyGrid 组件:
git 克隆https://github.com/toreaurstadboss/BlazorPropertyGrid/tree/main/BlazorPropertyGrid
GitHub 存储库都有一个 Razor 组件库项目和一个使用该组件的示例 Blazor Server 项目(带有客户端),因此应该很容易测试和改进。我可能会在某个时候向这个控件添加编辑功能..
下面的屏幕截图显示您可以检查具有嵌套级别的对象。
Github 存储库还显示了开始创建属性网格控件所需的代码。我可能会为它添加编辑功能,你可以分叉它,因为它只是我今天花了几个小时的一个演示项目。免责声明:请勿在生产环境中使用此组件,它只是一个小爱好迷你项目。
推荐阅读
- python - Python Pyomo 出现错误:检测到常量目标,用占位符替换以防止求解器失败
- elasticsearch - 按查询更新 - 在以下查询中刷新数据
- algorithm - 如何在算法乳胶包中为缩进块添加垂直线?
- javascript - 为什么挂载在 Vue 插件或 Mixin 中会工作多次?
- php - Html 表单无法将数据传递到 MySQL 数据库
- python - 检查线程是否仍在 Python 线程中运行
- regex - 限制多个组中的字符总数
- javascript - 如何从 if 语句中获取 json 数据?
- c++ - 为什么 C++ 位域要求我指定类型?
- javascript - 搜索符号时 List.js 不起作用