【问题标题】:How to create a reusable 'GUI' in blazor?如何在 blazor 中创建可重用的“GUI”?
【发布时间】:2023-03-30 17:45:01
【问题描述】:

我目前正在尝试使用 Blazor 创建我的第一个 Web 应用程序。在我一直在 WPF 中编程之前。我正在尝试将我的 wpf 项目转换为 asp.net core blazor 项目。

使用 wpf 时,我可以创建一个可重复使用的用户控件,我可以根据我的 sql 数据库中的数据行数继续使用该控件。我如何在 blazor 中做类似的事情?是否可以创建一个 blazor 页面然后继续重复使用它?

任何提示将不胜感激。

【问题讨论】:

  • 你试过什么?这是一个非常标准的组件场景,看看这个演练meziantou.net/creating-a-repeater-component-with-blazor.htm
  • 我会看看这个。谢谢
  • 默认模板创建一个可重用的“计数器”组件。您应该花一些时间玩 Blazor 并阅读文档,因为这是非常基本的东西。

标签: c# asp.net-core blazor


【解决方案1】:

注意:Blazor 中的所有组件都是可重用的。

Blazor 中有两种类型的组件:可路由组件和不可路由组件。可路由组件也称为页面组件。他们使用 Razor @page 指令和路由模板进行注释,例如:

@page "/counter"

可路由组件是您可以使用 url 导航到的组件... 默认模板创建一个名为 Counter 的可路由组件,您可以通过单击导航栏中的计数器菜单项导航到它。 Counter 组件在这里扮演“页面”的角色。但是你也可以将它作为子组件嵌入到 Index 组件中,在这种情况下,Counter 组件被重用,并且作为子组件

感谢您的回答。我设法获得了一个可重复使用的剃须刀页面。快速提问。当我使用 wpf 执行此操作时,我使用 Tag 将数据发送到用户控件。我该如何使用 blazor 来代替?

您想要的是父组件与其子组件之间的数据绑定。以下是在默认 Blazor 模板中创建的 Counter 组件的代码:

Counter.razor

@page "/counter"

<h1>Counter</h1>

<p>Current count: @currentCount</p>

<button class="btn btn-primary" @onclick="IncrementCount">Click me</button>

@code {
    private int currentCount = 0;

    private void IncrementCount()
    {
        currentCount++;
    }
}

下面描述了如何改变组件,以便它从要嵌入它的父组件中获取值。

我不想像这样定义一个局部变量:private int currentCount = 0;,我想从父组件传递一个数值给 Counter 组件...在这种情况下,我必须定义一个参数属性,它将获得传递的值:

[Parameter]
public int CurrentCount {get; set;};

所以现在您可以在您的 Counter 组件中使用传递的值。这就是您将 Counter 组件嵌入到索引组件中并为其传递值的方式:

Index.razor

@page "/"
<div>@value</div>

<Counter CurrentCount="value" />

@code
{
   private int value = 100;
}

【讨论】:

  • 感谢您的回答。我设法获得了一个可重复使用的剃须刀页面。快速提问。当我使用 wpf 执行此操作时,我使用 Tag 将数据发送到用户控件。我该如何使用 blazor 来代替?
【解决方案2】:

将组件视为 Blazor 版本的用户控件,您应该很容易适应 Blazor。

【讨论】:

    猜你喜欢
    • 2021-02-09
    • 1970-01-01
    • 2011-07-23
    • 1970-01-01
    • 1970-01-01
    • 2023-02-08
    • 2015-09-07
    • 1970-01-01
    • 2017-04-03
    相关资源
    最近更新 更多