2

我正在将 MudBlazor 与 Blazor 服务器端一起使用,并且我正在尝试双重绑定 MudChip。我想保存在数据库中选择的芯片并在稍后检索数据并将芯片预渲染为选定的。基本上是在芯片上做双重绑定。它似乎不起作用,我尝试过:

  1. 在 OnInitialized 方法中创建一个新芯片,并在 SelectedChip 属性上设置属性(Text、Color、IsSelected):

<MudContainer>
                  <MudText Style="display:inline;color:white">Goal Type</MudText>
                  <MudChipSet @bind-SelectedChip="md"  Style="display:inline;" Filter="true">
                      <MudChip  Text="Financial" Color="Color.Dark">Financial</MudChip>
                      <MudChip Text="Personal" Color="Color.Dark">Personal</MudChip>
                  </MudChipSet>
</MudContainer>

这是代码:

MudChip md;

  protected override void OnInitialized()
  {
        Init();
  }

  public void Init()
  {
        if (md == null)
        {
            md = new MudChip { Color = Color.Dark, Text = "Financial", IsSelected = true };
        }
  }
  1. 创建对所选芯片的引用:

<MudChipSet @bind-SelectedChip="md" @onselect="OnSelect" Style="display:inline;" Filter="true">
                        <MudChip Text="Financial" Color="Color.Dark">Financial</MudChip>
                        <MudChip @ref="personal" Text="Personal" Color="Color.Dark">Personal</MudChip>
     </MudChipSet>

这是代码:

MudChip md;
 MudChip personal;

 protected override void OnInitialized()
 {
        if(md is null)
        {
            md = personal;
        }
 }

这些方法都不起作用,您是否知道双重绑定是否可能?我还在 GitHub 页面上询问过,其中一位贡献者说,通过使用提供的示例,这是可能的。对我来说,它们没有多大帮助。这是 GitHub 问题:

https://github.com/Garderoben/MudBlazor/discussions/1791

4

1 回答 1

2

OnInitialized 在第一次渲染之前被触发,所以personal当你设置时它仍然是 null md=personal

当 firstRender 为真时,将该代码移至 OnAfterRender(bool firstRender)

于 2021-06-07T07:01:21.733 回答