xaml-coding-guidelines
xaml-coding-guidelines copied to clipboard
XA1003 - Use a logical grouped order instead of an alphabetical order.
The alphabetical order is quick and simple. However, it can leads to harder reading when the number of attributes is important. For example, FontSize
and TextAlignment
have a close relationship, but can be few attributes (lines) away.
Here are the different groups, and their ordering, proposed.
- x:Key and x:Name
- Attached properties
- Positionning (HorizontalAlignment, VerticalAlignment, margins, z-order, stretch Canvas., Grid.)
- Box model (width, height)
- Typography (Font*, Foreground if text item, Text, Content)
- Visual (background, fill, foreground , borderbrush, borderthickness, Stroke, StrokeThickness opacity, visibility, style)
- Misc
- Event handlers
Pros:
- Code is ordered in a meaningful way,
- Related attributes are grouped.
Cons:
- Difficult to maintain without tolling support
Questions:
- How to handle custom controls attributes ? If you are using a vendor control suite (like Telerik or Infragistics), you may have a ton of "misc" attributes.
Your feedback is welcome.
A plugin exists to get a slightly different result. https://github.com/nicovermeir/xamlstyler
I agreed, sorting can be tricky to read. Grouping is more logical, ie : I always group Width and Height together. To automatise the process with a plugin, you need a configuration where you store grouped attributes. Every time a new attribute is encountered, it is added in the configuration file in a "unsorted" group. A UI allowing the user the move attributes between groups.