繼 HelloWorld 後,本文完成企業級應用標準框架的 三大核心區域佈局:Ribbon 導航列、內容顯示區、狀態列,並實現 Silver / Blue / Black 三套 Office 2010 風格主題一鍵切換。
| 區域 | 控制項 | 功能 |
|---|---|---|
| 導航列 | Fluent:Ribbon | 分頁、群組、按鈕、快速存取工具列、Backstage 選單 |
| 內容區 | Grid (RowDefinition *) | 承載 MDI 文檔、儀表板、報表等業務視圖 |
| 狀態列 | Fluent:StatusBar | 訊息提示、進度、版本、使用者資訊 |
三種主題效果**:



<Fluent:RibbonWindow x:Class="TLAgent.SecurityManager.WPF.MainWindow"
xmlns="https://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="https://schemas.microsoft.com/winfx/2006/xaml"
xmlns:Fluent="clr-namespace:Fluent;assembly=Fluent"
Title="用戶權限管理系統" Height="350" Width="525"
Icon="/TLAgent.SecurityManager.WPF;component/Images/usergroup.ico">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/> <!-- Ribbon -->
<RowDefinition Height="*"/> <!-- 內容區 -->
<RowDefinition Height="Auto"/> <!-- StatusBar -->
</Grid.RowDefinitions>
<!-- Ribbon -->
<Fluent:Ribbon Grid.Row="0" AutomaticStateManagement="True" x:Name="ribbon">
<Fluent:Ribbon.QuickAccessItems>
<Fluent:QuickAccessMenuItem Target="{Binding ElementName=BtnSecManager}"/>
<Fluent:QuickAccessMenuItem Target="{Binding ElementName=BtnModifyPassword}"/>
</Fluent:Ribbon.QuickAccessItems>
<Fluent:RibbonTabItem Header="用戶管理" ReduceOrder="(P),(P),(P),(P),(P)">
<Fluent:RibbonGroupBox Header="User Group">
<Fluent:Button Header="查詢用戶" Command="{Binding OpenCommand}"
Icon="Images\Gray.png" LargeIcon="Images\GrayLarge.png" Name="BtnQueryUser"/>
<Fluent:Button Header="添加用戶" Command="{Binding AddFunctionCommand}"
Icon="Images\Green.png" LargeIcon="Images\GreenLarge.png" Name="BtnAddUser"/>
<Fluent:Button Header="更新用戶" Command="{Binding OpenCommand}"
Icon="Images\Gray.png" LargeIcon="Images\GrayLarge.png" Name="BtnModifyUser"/>
</Fluent:RibbonGroupBox>
</Fluent:RibbonTabItem>
<Fluent:RibbonTabItem Header="角色管理" ReduceOrder="(P),(P),(P),(P),(P)">
<Fluent:RibbonGroupBox Header="Role Group">
<Fluent:Button Header="查詢角色" Command="{Binding OpenCommand}" ... Name="BtnQueryRole"/>
<Fluent:Button Header="添加角色" Command="{Binding AddFunctionCommand}" ... Name="BtnAddRole"/>
<Fluent:Button Header="更新角色" Command="{Binding OpenCommand}" ... Name="BtnModifyRole"/>
</Fluent:RibbonGroupBox>
</Fluent:RibbonTabItem>
<Fluent:RibbonTabItem Header="部門管理" ReduceOrder="(P),(P),(P),(P),(P)">
<Fluent:RibbonGroupBox Header="Department Group">
<Fluent:Button Header="查詢部門" Command="{Binding OpenCommand}" ... Name="BtnQueryDept"/>
<Fluent:Button Header="添加部門" Command="{Binding AddFunctionCommand}" ... Name="BtnAddDept"/>
<Fluent:Button Header="更新部門" Command="{Binding OpenCommand}" ... Name="BtnModifyDept"/>
</Fluent:RibbonGroupBox>
</Fluent:RibbonTabItem>
<Fluent:RibbonTabItem Header="系統管理" ReduceOrder="(P),(P),(P),(P),(P)">
<Fluent:RibbonGroupBox Header="Security Group">
<Fluent:Button Header="系統日誌" Command="{Binding AddFunctionCommand}"
Icon="Images\systemlog.ico" LargeIcon="Images\systemlog.ico" Name="BtnSecManager"/>
<Fluent:Button Header="更改密碼" Command="{Binding OpenCommand}"
Icon="Images\changePassword.ico" LargeIcon="Images\changePassword.ico" Name="BtnModifyPassword"/>
</Fluent:RibbonGroupBox>
<Fluent:RibbonGroupBox Header="System Group">
<Fluent:Button Header="退出系統" Width="80" Command="{Binding AddFunctionCommand}"
Icon="Images\close.png" LargeIcon="Images\close.png"/>
</Fluent:RibbonGroupBox>
</Fluent:RibbonTabItem>
</Fluent:Ribbon>
<!-- 內容區 (此處預留,後續整合 AvalonDock) -->
<Grid Grid.Row="1" />
<!-- StatusBar -->
<Fluent:StatusBar HorizontalAlignment="Stretch" VerticalAlignment="Bottom" Grid.Row="2">
<Fluent:StatusBarItem Title="Words Width" Value="150" HorizontalAlignment="Left">
<TextBlock Text="Message" />
</Fluent:StatusBarItem>
</Fluent:StatusBar>
</Grid>
</Fluent:RibbonWindow>
// App.xaml.cs
public partial class App : Application
{
protected override void OnStartup(StartupEventArgs e)
{
ThemeManager.ChangeTheme(ThemeStyle.Black); // 啟動時套用預設主題
base.OnStartup(e);
}
}
// 任意位置切換 (如設定視窗、快捷鍵)
ThemeManager.ChangeTheme(ThemeStyle.Silver);
ThemeManager 實作核心**:合併 ResourceDictionary,同時替換 Fluent Ribbon 與 AvalonDock (若已整合) 的主題資源。