雙欄對照計算機 — WinUI 3 + C# + Windows App SDK
- 雙欄模式:點擊 Toolbar 上的開關,即時展開/收起第二個計算機,並會根據設定自動調整視窗大小,顏色狀態與提示也會動態切換。
- 配置讀取:新增
config.yaml支援預設視窗大小與單/雙欄啟動配置,且在配置頁也新增相關對應邏輯。 - 先乘除後加減:Shunting-yard 算法,完整支援運算子優先級。
- 語系切換:配置頁即時切換,所有 UI 文字(包含動態更新的提示)自動連動。
- 三種主題:系統 / 明亮 / 黑暗,即時生效不需重啟。
- Memory 功能:MC / MR / M+ / M− / MS。
| 工具 | 版本 |
|---|---|
| Visual Studio | 2026 18.5+ |
| Windows App SDK | 2.0+ |
| .NET | 10.0 |
| Windows | 10 1809 (build 17763)+ |
- Windows 應用程式開發 (Windows application development)
- .NET 桌面開發
# 1. Clone 專案
git clone https://github.com/m121752332/DualCalc.git
cd DualCalc
# 2. 用 Visual Studio 2022 或 Visual Studio 2026 開啟
# 開啟 DualCalc.sln
# 3. 選擇平台 x64 → 執行 (F5)DualCalc/
├── Models/
│ └── CalculatorEngine.cs # Shunting-yard 計算核心
├── ViewModels/
│ ├── CalculatorViewModel.cs # 單一計算機狀態
│ ├── MainViewModel.cs # 雙欄切換邏輯
│ └── SettingsViewModel.cs # 語言 + 主題設定
├── Views/
│ ├── CalculatorView.xaml # 計算機 UI 元件
│ ├── SettingsView.xaml # 配置頁
│ └── AboutView.xaml # 關於頁
├── Services/
│ ├── ConfigService.cs # config.yaml 參數讀取服務
│ ├── LocalizationService.cs # 繁簡切換服務
│ └── ThemeService.cs # 主題切換服務
├── Converters/
│ └── BoolToVisibilityConverter.cs
├── i18n/
│ ├── en-US.json # 英文語系字典
│ ├── ja-JP.json # 日文語系字典
│ ├── zh-CN.json # 簡體中文語系字典
│ └── zh-TW.json # 繁體中文語系字典
└── config.yaml # 系統全域應用配置檔詳細的異動紀錄(包含新功能與優化項目)已移至獨立文件管理,請參閱: 👉 docs/Changelog.md
- 專案已全面調整語系架構,由原本的
.resw資源檔遷移至DualCalc/i18n/*.json的字典讀取機制。 - 支援了「繁體中文(zh-TW)」、「簡體中文(zh-CN)」、「英文(en-US)」以及「日文(ja-JP)」四種語言介面。
config.yaml的預設語言已改為新架構支援的名稱,並維持對外設定值的保存一致性。- 配置頁中的語系選項目前顯示為:
繁體中文(zh-TW)簡體中文(zh-CN)英文(en-US)日文(ja-JP)
publish.ps1打包流程已驗證可正常輸出 x64 / arm64 單一執行檔。- 先前的 PRI 預設語言警告,已透過將專案
DefaultLanguage調整為zh-TW解決。 - 先前的 trimming 警告,已透過停用
PublishTrimmed排除,以降低 WinUI / WinRT / YamlDotNet 在發佈後的執行期風險。 Assets/Logo.jpg已設定為隨輸出與 publish 一併複製,避免About頁圖片遺失。
- 主視窗不再允許被縮到破壞版面的尺寸。
- 最小高度會依
config.yaml的defaultAppHeight限制。 - 最小寬度會依目前模式動態切換:
- 單欄模式:以單台計算機配置寬度為下限
- 雙欄模式:以雙台計算機配置寬度為下限
- 目前專案語系切換的實際顯示來源為
LocalizationService讀取i18n目錄下的 JSON 字典檔案為主,若讀取失敗則會有防錯機制或介面上的 Error InfoBar 提示。
| 層 | 技術 |
|---|---|
| 前端 | WinUI 3 / Windows App SDK 2.0 |
| 後端 | C# 12 / .NET 10 |
| 架構 | MVVM + x:Bind |
| 計算引擎 | Shunting-yard Algorithm |
| 主題 | Mica Backdrop + ElementTheme |
| 本地化 | JSON 多語系架構 |
| 配置檔 | YamlDotNet |
- Phase 1 — 專案架構 + CalculatorEngine + 所有 ViewModel / Service
- Phase 2 — UI 細節調整 + 動畫
- Phase 3 — 鍵盤輸入支援
- Phase 4 — 打包發布
本專案支援將應用程式打包成乾淨的單一獨立執行檔(包含一切相依性,只需 .exe 原地執行),並支援 x64 與 arm64 兩種架構。
只要在命令列或 PowerShell 中執行已經撰寫好的打包腳本即可:
.\publish.ps1執行後會自動清理 bin / obj,並產出打包檔案至:
- x64:
DualCalc\bin\Release\net10.0-windows10.0.19041.0\win-x64\publish\ - arm64:
DualCalc\bin\Release\net10.0-windows10.0.19041.0\win-arm64\publish\
請記得將打包產出的 DualCalc.exe 與根目錄的 config.yaml 放在相同的目錄層級進行散佈發布,確保應用程式能正確讀取初始配置。若仍出現讀取問題,程式會跳出彈窗提示錯誤原因。
© 2026 DualCalc

