Skip to content

[Feature] Split up the controls package. #3594

@Rosuavio

Description

@Rosuavio

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"

  1. 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.
  2. 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

  1. Keep the package as it is.
  2. 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

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions