翻譯|行業資訊|編輯:龔雪|2024-10-22 11:27:35.560|閱讀 109 次
概述:本文主要為大家介紹如何在靜態SSR模式下使用DevExpress Blazor Drawer組件,歡迎下載最新版體驗!
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
Microsoft的 .NET 8 UI框架引入了靜態服務器端呈現模式(靜態SSR)——組件在服務器端呈現,然后返回到客戶端,沒有任何交互,DevExpress Blazor Drawer組件需要交互式呈現模式來動態地改變其IsOpen狀態。
在本文中,我們將回顧在靜態SSR渲染模式下動態顯示/隱藏DevExpress Blazor Drawer組件的兩種策略:
P.S.:DevExpress擁有.NET開發需要的所有平臺控件,包含600多個UI控件、報表平臺、DevExpress Dashboard eXpressApp 框架、適用于 Visual Studio的CodeRush等一系列輔助工具。
DevExpress技術交流群10:532598169 歡迎一起進群討論
對于這個例子,我們使用的是一個Microsoft Blazor項目模板創建的Blazor Web應用程序。在這個應用程序中,注冊了適當的DevExpress資源,并用以下代碼替換了MainLayout.razor頁面中的內容。
MainLayout.razor
<style>
.dxbl-drawer > .dxbl-drawer-panel > .dxbl-drawer-body {
padding: 0;
}
</style>
<DxDrawer PanelWidth="250px" IsOpen="@true">
<BodyTemplate>
<div class="sidebar">
<NavMenu />
</div>
</BodyTemplate>
<TargetContent>
<div class="top-row px-4">
Here will be a toggle element.
<a target="_blank">About</a>
</div>
<article class="content px-4">
@Body
</article>
</TargetContent>
</DxDrawer>
這個標記創建一個永久可見的drawer,用戶可以使用它在頁面之間導航,但還不能修改可見性。
查詢參數是緊跟頁面URL的?字符串后面的,這些參數可以為組件屬性設置值。
要使用查詢參數并更改drawer的IsOpen屬性值,您必須:
1. 使用 屬性指定drawer的IsOpen參數來自查詢字符串。
<DxDrawer IsOpen="@IsOpen">
...
@code {
[SupplyParameterFromQuery]
public bool IsOpen { get; set; }
}
2. 添加一個元素來控制drawer的可見性,將其封裝在導航到當前頁面但切換IsOpen參數的NavLink組件中。
@inject NavigationManager NavigationManager
<style>
.drawer-toggler {
position: absolute;
appearance: none;
cursor: pointer;
width: 2rem;
height: 2rem;
top: 0.75rem;
left: 0.75rem;
border: 1px solid rgba(50, 50, 50, 0.1);
background: url("data:image/svg+xml,%3csvg xmlns='//www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%2850, 50, 50, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e") no-repeat center/1.75rem rgba(50, 50, 50, 0.1);
}
</style>
...
@* Here will be a toggle element. *@
<NavLink href="@(new Uri(NavigationManager.Uri).LocalPath + "?IsOpen=" + (!IsOpen).ToString())">
<input type="checkbox" title="Navigation menu" class="drawer-toggler"/>
</NavLink>
...
這樣用戶就可以點擊切換按鈕來顯示/隱藏drawer,但是當用戶導航到另一個頁面時,drawer將消失。要解決此限制,請向導航鏈接添加`IsOpen`查詢參數,如下所示。
3. 在NavMenu組件中添加IsOpen參數。
MainLayout.razor
<NavMenu IsOpen="@IsOpen" />
4. 用以下代碼替換NavMenu.razor文件中的代碼。
NavMenu.razor
<div class="top-row ps-3 navbar navbar-dark">
<div class="container-fluid">
<a class="navbar-brand" href="">BlazorApp</a>
</div>
</div>
<nav class="flex-column">
<div class="nav-item px-3">
<NavLink class="nav-link" href="@GetUrlWithParameter("")" Match="NavLinkMatch.All">
<span class="bi bi-house-door-fill-nav-menu" aria-hidden="true"></span> Home
</NavLink>
</div>
<div class="nav-item px-3">
<NavLink class="nav-link" href="@GetUrlWithParameter("weather")">
<span class="bi bi-list-nested-nav-menu" aria-hidden="true"></span> Weather
</NavLink>
</div>
</nav>
@code {
[Parameter] public Boolean IsOpen { get; set; }
string GetUrlWithParameter(string url) {
return url + "?IsOpen=" + IsOpen.ToString();
}
}
現在用戶可以通過導航菜單復選框控制drawer的可見性。
注意:此方法在DevExpress Blazor項目模板(v24.1.6+)中使用。
CSS規則允許您根據其他組件的狀態有條件地對元素應用樣式,使用這種方法,我們將根據復選框狀態切換drawer可見性(將其寬度設置為0)。要實現此功能,您必須:
1. 添加一個復選框元素來切換drawer的可見性。
<style>
.drawer-toggler {
position: absolute;
appearance: none;
cursor: pointer;
width: 2rem;
height: 2rem;
top: 0.75rem;
left: 0.75rem;
border: 1px solid rgba(50, 50, 50, 0.1);
background: url("data:image/svg+xml,%3csvg xmlns='//www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%2850, 50, 50, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e") no-repeat center/1.75rem rgba(50, 50, 50, 0.1);
}
</style>
...
@* Here will be a toggle element. *@
<input type="checkbox" title="Navigation menu" class="drawer-toggler" checked />
...
2. 添加以下CSS規則,在未選中復選框時將drawer面板寬度設置為零。
.dxbl-drawer:has(.drawer-toggler:not(:checked)) .dxbl-drawer-panel {
width: 0 !important;
}
這樣,用戶就可以單擊復選框來顯示/隱藏drawer。
完整代碼如下:
<style>
.dxbl-drawer > .dxbl-drawer-panel > .dxbl-drawer-body {
padding: 0;
}
.drawer-toggler {
position: absolute;
appearance: none;
cursor: pointer;
width: 2rem;
height: 2rem;
top: 0.75rem;
left: 0.75rem;
border: 1px solid rgba(50, 50, 50, 0.1);
background: url("data:image/svg+xml,%3csvg xmlns='//www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%2850, 50, 50, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e") no-repeat center/1.75rem rgba(50, 50, 50, 0.1);
}
.dxbl-drawer:has(.drawer-toggler:not(:checked)) .dxbl-drawer-panel {
width: 0 !important;
}
</style>
<DxDrawer PanelWidth="250px" IsOpen="@true">
<BodyTemplate>
<div class="sidebar">
<NavMenu />
</div>
</BodyTemplate>
<TargetContent>
<div class="top-row px-4">
<input type="checkbox" title="Navigation menu" class="drawer-toggler" checked />
<a target="_blank">About</a>
</div>
<article class="content px-4">
@Body
</article>
</TargetContent>
</DxDrawer>
為了幫助您入門,我們創建了一個示例,演示如何使用CSS來控制Drawer的可見性,以及如何修改移動設備上的組件配置。您可以從我們的GitHub倉庫下載這個例子:。
更多產品需求,歡迎咨詢“”~
更多DevExpress線上公開課、中文教程資訊請上中文網獲取
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@ke049m.cn
文章轉載自:慧都網