๐ค Contributing to WpfHexEditor
April 1, 2026 ยท View on GitHub
Contributions are welcome and appreciated! This guide covers everything you need to get started.
Getting Started
Prerequisites
- Visual Studio 2022 (recommended) or Rider 2024+
- .NET 8.0 SDK โ download
- Windows (WPF platform requirement)
Fork & Clone
git clone https://github.com/YOUR_USERNAME/WpfHexEditorIDE.git
cd WpfHexEditorIDE
Open WpfHexEditorControl.sln in Visual Studio 2022.
Set WpfHexEditor.App as the startup project and press F5 to verify everything builds and runs.
Project Structure
Sources/
โโโ WpfHexEditor.App/ โ IDE application (startup project)
โโโ WpfHexEditor.Core/ โ ByteProvider, services, data layer
โโโ WpfHexEditor.HexEditor/ โ HexEditor WPF control (partial classes by feature)
โ โโโ PartialClasses/
โ โโโ Core/ โ File ops, stream ops, events, async
โ โโโ Features/ โ Search, TBL, bookmarks, format detection, ...
โโโ WpfHexEditor.Editor.Core/ โ IDocumentEditor, IEditorFactory contracts
โโโ WpfHexEditor.Editor.TblEditor/ โ TBL editor (standalone, IDocumentEditor)
โโโ WpfHexEditor.Editor.JsonEditor/โ JSON editor (standalone, IDocumentEditor)
โโโ WpfHexEditor.Editor.TextEditor/โ Text editor (standalone, IDocumentEditor)
โโโ WpfHexEditor.Panels.IDE/ โ SolutionExplorer, Properties, ErrorPanel
โโโ WpfHexEditor.Panels.BinaryAnalysis/ โ ParsedFields, DataInspector, StructureOverlay
โโโ WpfHexEditor.Docking.Wpf/ โ VS-style docking engine
โโโ WpfHexEditor.ProjectSystem/ โ Solution/Project management
โโโ WpfHexEditor.HexBox/ โ Standalone hex input control
โโโ WpfHexEditor.BarChart/ โ Byte distribution chart
โโโ WpfHexEditor.Tests/ โ Unit tests (xUnit)
Branch Conventions
| Branch | Purpose |
|---|---|
master | Stable, release-ready |
development | Active development โ target this for PRs |
feature/my-feature | Feature branches (off development) |
fix/issue-123 | Bug fix branches |
Always branch from development, not master.
Code Standards
Architecture Patterns
- MVVM โ ViewModels must not reference Views; use Commands and bindings
- Partial classes โ HexEditor features are split into
PartialClasses/Features/*.cs; follow this pattern for new features - Services โ Business logic belongs in services (
WpfHexEditor.Core/Services/), not in the control - Interfaces โ New panel types must implement the relevant interface in
WpfHexEditor.Editor.Core
Coding Style
- C# 13, nullable reference types enabled
PascalCasefor public members,_camelCasefor private fields- Async methods suffixed with
Async; always acceptCancellationToken - XML doc comments on all public API members
Adding a New Editor
- Create a new project
WpfHexEditor.Editor.YourEditor - Implement
IDocumentEditor(fromWpfHexEditor.Editor.Core) - Create an
IEditorFactoryand register it:EditorRegistry.Instance.Register(new YourEditorFactory()) - Add a stub entry to the Editors table in
README.mdandFEATURES.md
Adding a New Panel
- Create the UserControl in the appropriate
WpfHexEditor.Panels.*project - Define the interface in
WpfHexEditor.Editor.Core - Add
Panel_*and your panel-specific theme keys to all 8Colors.xamlfiles - Connect in
WpfHexEditor.App/MainWindow.xaml.csviaDockHost.ActiveItemChanged
Theme Keys
Every new UI color must be a DynamicResource key defined in all 8 theme Colors.xaml files:
Dark ยท Light ยท VS2022Dark ยท DarkGlass ยท Minimal ยท Office ยท Cyberpunk ยท VisualStudio
Running Tests
dotnet test Sources/WpfHexEditor.Tests/
dotnet test Sources/WpfHexEditor.BinaryAnalysis.Tests/
dotnet test Sources/WpfHexEditor.Docking.Tests/
Submitting a Pull Request
- Branch from
development:git checkout -b feature/my-feature development - Make your changes โ keep commits focused and descriptive
- Run the tests โ all tests must pass
- Push your branch and open a PR targeting
development - Describe what you changed and why in the PR description
PR checklist:
- Targets
developmentbranch - Tests pass
- New theme keys added to all 8
Colors.xaml(if any UI color added) - Public API has XML doc comments
- README / FEATURES updated if a new editor or panel was added
Reporting Issues
- ๐ Bug report: GitHub Issues โ include OS, .NET version, minimal repro
- ๐ก Feature request: GitHub Discussions
Useful Links
Thank you for contributing! ๐