Blazor是否有相当于WinForm的PropertyGrid的替代品?

4
我很久以前就需要为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表单,或者一个可以在不使用数千个绑定到MySettings中每个属性的Razor页面上设计表单的Blazor组件。
以下是使用验证的详细步骤:
<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://learn.microsoft.com/zh-cn/aspnet/core/blazor/forms-validation?view=aspnetcore-3.1


不,这并不存在。而且它也不在路线图上。 - Flores
我认为你需要使用反射构建自己的代码。 - Kyle
我已经使用反射构建了一个。但是还应该向它添加编辑功能。现在它至少支持对象的嵌套级别。 - Tore Aurstad
1个回答

3
WinForms的PropertyGrid相当高级并支持编辑功能。Blazor目前尚未拥有官方组件。
以下GIF展示了我创建的一个组件。它目前支持检查具有嵌套结构的对象的基本情况。您目前无法使用该组件编辑属性。
更新:现在属性网格更加紧凑,并添加了编辑器(它们变为只读,因为还没有添加编辑功能。截图:)

Condensed look added

Property Grid in use in Blazor app

我已经为Blazor制作了一个简单的PropertyGrid组件,存放在以下repo url中:
git clone https://github.com/toreaurstadboss/BlazorPropertyGrid/tree/main/BlazorPropertyGrid 该GitHub repo包含一个Razor组件库项目和一个使用此组件的示例Blazor Server项目(带客户端),因此测试和改进应该很容易。 我可能会在某个时候添加对此控件的编辑功能。 Simple Blazor Property Grid component @ Github 下面的屏幕截图显示您可以检查具有嵌套级别的对象。
GitHub repo还显示了创建Property Grid控件所需的代码。 我可能会为其添加编辑功能,您可以fork它,因为它只是我今天花费几个小时制作的演示项目。 免责声明:不要在生产环境中使用此组件,它只是一个小型业余迷你项目。

Property Grid in Blazor


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接