遊戲面板大量使用選項卡,原生 TabControl 樣板重寫困難。本文採用用戶控件 + QXIcon 實現高自由度 QXTabControl,並展示屬性面板整合。
<UserControl x:Class="QXGameEngine.Control.QXTabControl" ...>
<Canvas>
<StackPanel x:Name="Head"/> <!-- 標籤列容器 -->
<ContentPresenter x:Name="Body"/> <!-- 內容區,支援任意 UIElement -->
</Canvas>
</UserControl>
StackPanel:Orientation 切換橫向/縱向標籤排列ContentPresenter:萬用內容容器,動態替換面板內容參考《劍俠世界》風格,實現四張圖片無縫切換:
case IconTypes.HitModes:
this.MouseEnter += (s, e) => { Container.Background = Hit ? HitNewBodySource : NewSource; };
this.MouseLeave += (s, e) => { Container.Background = Hit ? HitBodySource : _BodySource; };
this.MouseLeftButtonDown += (s, e) => { Hit = !Hit; };
break;
四狀態對應:
| 狀態 | 觸發條件 | 使用筆刷 |
|---|---|---|
| 預設 | 未選中、滑鼠離開 | _BodySource |
| 懸停 | 未選中、滑鼠進入 | NewSource |
| 選中 | 已選中、滑鼠離開 | HitBodySource |
| 選中懸停 | 已選中、滑鼠進入 | HitNewBodySource |
屬性面板包含四個分頁:屬性、聲望、稱號、榮譽。每個分頁對應不同內容面板,透過 SelectionChanged 事件動態載入。裝備管理與加點器將在後續章節詳細講解。