-
Couldn't load subscription status.
- Fork 1.4k
Description
Describe the problem this feature would solve
There are many different kinds of controls in the controls package and there are many different levels of abstraction between the controls.
From a technical perspective, users have to pull in the whole package and all its dependencies (like Win2d and xmal.behaviors) just to get access to simple controls (like WrapPanel).
From a perspective of usability, having all our controls grouped together under "controls"
- Makes the library as a whole less "understandable" as only a very general theme unifies it and consumers are not introduced to a specific domain.
- Makes it harder to find our controls that do address specific domains in collections of packages. As in if a user is searching for a package to help with "layout" related tasks they most likely won't stumble across our package even though we have a substantial group of controls/panels that only address layout.
Describe the solution
Split the controls package.
We can either split things based on their "weight", splitting general/minimally dependent/simple controls from opinionated/heavily dependent/complex controls.
Or split the controls based on the domains or problem spaces they live in. Domains like "Layout", "Input" or maybe "Image capture/creation/examination/manipulation"
Whatever way seems like the best, I want to see the package split up into more focused categories.
Describe alternatives you've considered
- Keep the package as it is.
- Have a separate package per control.
Analysis
| Control | For Layout | Standalone | Needs content | Provides Interactions | Styleless | Major Deps |
|---|---|---|---|---|---|---|
| AdaptiveGridView | x | x | x | |||
| DockPanel | x | x | x | |||
| StaggeredPanel | x | x | x | |||
| UniformGrid | x | x | x | |||
| WrapPanel | x | x | x | |||
| SwitchPresenter | x | x | x | |||
| LayoutTransformControl | x | x | ||||
| HeaderedContentControl | x | x | ||||
| HeaderedItemsControl | x | x | ||||
| Carousel | x | x | x | |||
| MasterDetailsView | ? | x | x | |||
| OrbitView | ? | x | x | Animation #3627 | ||
| BladeView | ? | x | x | |||
| Expander | ? | x | x | |||
| InAppNotification | ? | x | x | |||
| RotatorTile | ? | x | ||||
| DropShadowPanel | x | |||||
| ScrollHeader | x | Animation, Behaviors | ||||
| TileControl | ? | x | Animation #3633 | |||
| TextToolbar | ? | x | ||||
| GridSplitter | ? | x | ||||
| ImageEx | x | |||||
| Menu | x | x | ||||
| Loading | x | |||||
| RadialProgressBar | x | |||||
| CameraPreview | x | |||||
| ColorPicker | x | x | ||||
| RadialGauge | x | x | ||||
| RangeSelector | x | x | Animation #3611 | |||
| RemoteDevicePicker | x | x | ||||
| TokenizingTextBox | x | x | ||||
| ImageCropper | x | x | Win2d | |||
| Eyedropper | x | x | Win2d | |||
| InfiniteCanvas | x | x | Win2d |
Related to #3145