首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >blazor的onclick方法不会改变字体的图标

blazor的onclick方法不会改变字体的图标
EN

Stack Overflow用户
提问于 2021-02-17 21:09:04
回答 1查看 248关注 0票数 0

我有一个简单的方法SortClass(column),当用户点击图标时更改css类,我检查了该方法,它工作正常,但blazor在分配类的值后不重新生成SVG。

代码语言:javascript
复制
 <th  @onclick="@(() => SortData(col))" scope="col">
      @col.Caption
      <i class="@SortClass(col)"></i>
  </th>

SortClass:

代码语言:javascript
复制
private string SortClass(ColumnDefinition col)
{
    if (col._SortDirection != SortDirection.NotSet)
    {
        return $"{col._SortDirection.ToString().ToLower()}"; // SortDirection is enum has value {"fas fa-sort-up", "fas fa-sort-down"}
    }
    return "invisible";
    
}

Onclick方法:

代码语言:javascript
复制
 private void SortData(ColumnDefinition sortByCol = null)
        {
            if (sortByCol is null)
            {
                sortByCol = Columns.FirstOrDefault(x => x._SortDirection != SortDirection.NotSet);
                if (sortByCol is null) return;
            }
            if (sortByCol._SortDirection != SortDirection.NotSet)
            {
                switch (sortByCol._SortDirection)
                {
                    case SortDirection.NotSet:
                        sortByCol._SortDirection = SortDirection.Asc;
                        break;
                    case SortDirection.Asc:
                        sortByCol._SortDirection = SortDirection.Desc;
                        break;
                    case SortDirection.Desc:
                        sortByCol._SortDirection = SortDirection.Asc;
                        break;
                    default:
                        sortByCol._SortDirection = SortDirection.Asc;
                        break;
                }

                if (sortByCol._SortDirection == SortDirection.Asc)
                {
                    DataItems.Sort((x, y) => typeof(TItem).GetProperty(sortByCol.DataField).GetValue(x).ToString()
                        .CompareTo(typeof(TItem).GetProperty(sortByCol.DataField).GetValue(y).ToString()));
                }
                else
                {
                    DataItems.Sort((x, y) => typeof(TItem).GetProperty(sortByCol.DataField).GetValue(y).ToString()
                        .CompareTo(typeof(TItem).GetProperty(sortByCol.DataField).GetValue(x).ToString()));
                }
            }

        }
EN

回答 1

Stack Overflow用户

发布于 2021-02-19 15:54:07

我认为您的组件没有意识到您想要进行的更改,因为图标类没有绑定到类属性,以及在预定义的生命周期方法(如OnInitialized等)中是否进行了更改。因此,要么将图标类绑定到在执行排序时更改的属性,要么显式地传达要使用StateHasChanged()-method呈现的更改。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66242580

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档