Mechanism is a collection of Controls, Themes, and other such tools, intended for use with Avalonia, with a partial focus on helping Avalonia apps look and feel more 'at home' on each supported platform.
At this early stage, I cannot promise that all of Mechanism for Avalonia is production-ready. That's not to say it necessarily isn't, more just that I don't know, and could use some help finding out.
ToolBarTray
andToolBar
(nearly feature-complete)CommandBar
(feature-complete, in need of testing)FlyoutButton
(feature-complete, in need of testing)SplitButton
(feature-complete, in need of testing)SplitToggleButton
(feature-complete, in need of testing)ContentDialog
(under construction)StyleableWindow
(shelved)ToolStrip
(functional but lacks visual polish, in need of testing)BlenderBar
(feature-complete, in need of testing)
- Windows Aero
- Windows Fluent
- macOS Human
- Jade (shelved)
- Slate (shelved)
PerPlatformUI
(under construction)
I'll admit, I'm not exactly the best at writing documentation, and don't have a great deal of experience doing so. That said, I do believe that clear documentation is very important, so if you find anything on the Wiki that's unclear, missing, inaccurate, do submit an issue for that as well. This also applies for smaller things, such as typos.
If you find any bugs in Mechanism, please, do submit an issue! if you stumble across a bug, no matter how obvious (or subtle and unimportant) it may seem, please submit an issue about it regardless. This also applies to purely-cosmetic problems, visual rough edges, etc., even while Mechanism's themes are still in development.
If you feel that Mechanism and its features are missing essential or otherwise-desirable functionality, or could be otherwise improved, please do submit an issue about it. I make no promises, but do make your case for why the functionality should be included, and we'll discuss the feasibility and value of your suggested functionality. I'm generally happy to consider implementing suggestions if I believe it is reasonably feasible and/or sufficiently beneficial to do so. Just do bear in mind, this is a hobby project I work on in my spare time, and while I want it to be as useful as possible, I may have to draw a line in the sand if needed.
While I can't make any promises, if you need certain controls or themes or anything else of the sort built for your Avalonia app, I'm certainly open to considering adding your suggested features, so do submit an issue for that as well, and we'll discuss the merits and feasibility of your suggestion. For the moment, I can't promise the immediacy of delivery on these suggestions, as Mechanism already has many features planned but not yet fully implemented (if at all), but I'm certainly open to adding to my to-do list. I'll prioritize your suggestions as I see fit, but if you believe your suggestion should be prioritized differently, I am open to hearing your case for why. Just do bear in mind, Mechanism is not a for-profit endeavor - I don't get paid to do this, I do it because I choose to, and while I want Mechanism to be as useful as it can be, I may have to refuse some suggestions for any number of reasons.
If you wish to contribute to Mechanism yourself, it is best if you contact me before doing so. I'm generally open to external contributions, but I'd hate to see someone put a lot of work into something, only for me to have to turn it down for whatever reason, so if that's not a risk you want to take, do reach out beforehand and inquire about your planned changes. I won't take any such inquiries as promises or commitments unless you indicate otherwise, so if, you're worried about biting off more than you can handle...if it's any reassurance, I've been there myself, in the past. As such, I've taken great care to ensure that Mechanism does not overpromise, and wish to extend that same respect to you, should you choose to contribute. When submitting a Pull Request, please include whatever alias(es) you wish to be listed under in the Mechanism credits, should your PR be merged, as well as any website links or whatever you'd like me to include along with your chosen alias(es). Additionally, please be aware that if needed, I will not hesitate to suggest changes to your contributions for any number of reasons.
ActionBox
ToggleSwitch
BreadcrumbsBar
andBreadcrumbItem
Rearranger
andRearrangeablePane
- macOS-style Column view
- Some kind of MDI-window-based
ItemsControl
thing
- Windows XP Luna
- Metro (e.g. Windows 8, Windows 10 pre-Fluent)
- Windows Classic
- Mac OS X Aqua
- Ubuntu Ambiance and/or Communitheme(?)
- Elementary OS
- Possibly some other popular Linux themes (open to suggestions)
- Plex
- Shale
- Platform-matching theme loader
- Compiled XAML skin loader, with optional support for sideloading user-provided skins