You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在DevExpress XAF ASP.NET Core Blazor项目中实现导航栏点击自动折叠

实现XAF Blazor平板端点击导航菜单项后自动折叠导航栏

针对你的DevExpress XAF ASP.NET Core Blazor(XPO)项目需求,以下是两种实用的实现方案:

方案1:JavaScript监听点击事件直接处理

利用事件委托监听导航菜单项的点击,在平板端断点下自动移除侧边栏展开的控制类:

  1. 在wwwroot/js/site.js中添加以下代码:
document.addEventListener('DOMContentLoaded', function () {
    // 委托监听所有导航链接点击(适配XAF默认导航项的nav-link类)
    document.body.addEventListener('click', function (e) {
        const navItem = e.target.closest('.nav-link');
        if (navItem && window.innerWidth <= 1320) {
            const appContainer = document.querySelector('app');
            if (appContainer.classList.contains('collapse-toggle')) {
                appContainer.classList.remove('collapse-toggle');
            }
        }
    });
});

注:如果你的导航项使用了自定义CSS类,可通过浏览器开发者工具查看后替换.nav-link。

  1. 确保_Host.cshtml中已引用该脚本:
<script src="~/js/site.js"></script>

方案2:通过XAF导航事件拦截(Blazor端逻辑)

订阅XAF的导航完成事件,触发折叠逻辑:

  1. 在Program.cs中注册导航事件处理:
using DevExpress.ExpressApp;
using DevExpress.ExpressApp.Blazor.Services;

// ...

builder.Services.AddXaf(Configuration, options => {
    options.Blazor.NavigationManager.Navigated += async (sender, e) => {
        var jsRuntime = builder.Services.BuildServiceProvider().GetRequiredService<IJSRuntime>();
        await jsRuntime.InvokeVoidAsync("collapseSidebarOnMobile");
    };
});
  1. 在site.js中添加对应的JS函数:
function collapseSidebarOnMobile() {
    if (window.innerWidth <= 1320) {
        const appContainer = document.querySelector('app');
        if (appContainer.classList.contains('collapse-toggle')) {
            appContainer.classList.remove('collapse-toggle');
        }
    }
}

验证测试

调整浏览器窗口宽度至1320px以下(模拟平板端),点击导航菜单项后,侧边栏会自动收起,与你已配置的初始化隐藏逻辑保持一致。

内容的提问来源于stack exchange,提问作者Shammu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 13:17:31