Skip to content

Redesign of GridSplitter API #2976

@verelpode

Description

@verelpode

I'm opening this issue to discuss problems with GridSplitter, as requested by @michael-hawker. Actually I presumed that GridSplitter was only in the Community Toolkit and not officially in UWP because the WinUI team already knew of problems; already knew that changes to GridSplitter's API are desirable, but yes it's good to open a new issue and get feedback from multiple people.

Currently 2 versions of GridSplitter exist:

Both of those versions have mostly the same API/design. My opinion is that this design is problematic from a programming point of view. From a user point of view, GridSplitter is good except when it malfunctions (or is misconfigured) and produces mangled GUI visible to the user.

One of the problems is what happens when you try to limit the user to a minimum pane size without breaking compatibility with a small app window size. It's very easy to accidentally configure GridSplitter incorrectly, and even if you do configure it correctly, it still does not behave well when the user resizes the window to a small size.

In my opinion, in order to make a rock solid alternative to GridSplitter, it should be made independent of Grid -- it should not use Grid. It can potentially use Grid internally if desired, but not in the public API.

In closed issue #465, @SeriousGeorge wrote:

For example if you have like 10 columns and adjust one in width.. each column/row after the current column modified in width, should shift as well.

@SeriousGeorge raised a valid issue, but I think his issue was closed because unfortunately he mentioned "a timeline control" and this confused the issue, but nevertheless his core point was valid. If people still don't understand what he said, then I'll make screenshots or diagrams to explain the problem and solution.

In closed issue #1666, @wstaelens experienced difficulty configuring GridSplitter. Even if his case is fully analyzed and determined to be his mistake and not a bug in GridSplitter, it still indicates problems with the design of GridSplitter. It's far too easy to misconfigure GridSplitter. The design of GridSplitter can be simplified and improved in a manner that eliminates this problem of GridSplitter being too difficult to configure. (And as I said, problems still exist even after configuration mistakes are fixed.)

To adequately describe the GridSplitter problems, I think I'll have to write some sample code that demonstrates problems, and also post a couple of screenshots of GUI mangled by GridSplitter. I won't be able to get around to this task this week, but in the meantime, people can start posting their feedback/experiences with using GridSplitter in Universal Windows apps, and I'll also post more detail next week or when I get the chance.

Another important question: Touchscreens. In regards to GridSplitter in Community Toolkit not WPF, are people satisfied or dissatisfied with its compatibility/behavior when operated by users on touchscreen-based devices that have no mouse?

See also: "Allow app users to resize NavigationView's Pane" #190

Metadata

Metadata

Assignees

No one assigned

    Labels

    bug 🐛An unexpected issue that highlights incorrect behaviorcontrols 🎛️feature request 📬A request for new changes to improve functionalityhelp wantedIssues identified as good community contribution opportunities

    Type

    No type

    Projects

    Status

    Done

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions