gpt4 book ai didi

blazor - 是否有与 WinForm 的 PropertyGrid 等效的 Blazor?

转载 作者:行者123 更新时间:2023-12-04 17:30:38 29 4
gpt4 key购买 nike

我对 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 页面中设计表单即可使用,数千个输入绑定(bind)到 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 显示了我在使用中制作的一个组件。它目前支持检查具有嵌套结构的对象的基本场景。您还不能使用组件编辑属性。
更新:属性网格现在更加简洁,并添加了编辑器(由于尚未添加编辑功能本身,它们已变为只读。屏幕截图:)
Condensed look added
Property Grid in use in Blazor app
我在以下 repo url 中为 Blazor 制作了一个简单的 PropertyGrid 组件:
git 克隆 https://github.com/toreaurstadboss/BlazorPropertyGrid/tree/main/BlazorPropertyGrid
GitHub 存储库都有一个 Razor 组件库项目和一个使用此组件的示例 Blazor 服务器项目(带有客户端),因此应该很容易测试和改进。
我可能会在某个时候为这个控件添加编辑功能..
Simple Blazor Property Grid component @ Github
下面的屏幕截图显示您可以检查具有嵌套级别的对象。
Github 存储库还显示了开始创建属性网格控件所需的代码。我可能会为它添加编辑功能,你可以 fork 它,因为它只是我今天花了几个小时的一个演示项目。免责声明:请勿在生产环境中使用此组件,它只是一个小型的业余爱好迷你项目。
Property Grid in Blazor

关于blazor - 是否有与 WinForm 的 PropertyGrid 等效的 Blazor?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60050886/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com