Architecture – prism and multiple screens

Architectureguipatterns-and-practicesui

OK – I am studying Prism a little because of a "free weekend" offer on Pluralsight. As this is proving too complex for me, I went to the Prism book and looked at the forward, and this is what it said:

What comes after “Hello, World?”

WPF and Silverlight developers are
blessed with an abundance of excellent books… There’s no lack of tutorials on
Model-View-ViewModel … But they stop short of
the guidance you need to deliver a non-trivial application in full.

Your first screen goes well. You add a second screen and a third.
Because you started your solution with the built-in “Navigation
Application Template,” adding new screens feels like hanging shirts on
a closet rod. You are on a roll. Until the harsh reality of real
application requirements sets in.

As it happens, your application
has 30 screens not three. There’s no room on that closet rod for 30
screens. Some screens are modal pop-ups; you don’t navigate to a
pop-up. Screens become interdependent such that user activity in one
screen triggers changes that propagate throughout the UI. Some screens
are optional; others are visible only to authorized users. Some
screens are permanent, while other screens can be opened and closed at
will. You discover that navigating back to a previously displayed
screen creates a new instance. That’s not what you expected and, to
your horror, the prior instance is gone along with the user’s unsaved
changes.

Now the issue is, I don't relate to this description. I've never been a UI programmer, but same as everyone else I'm using Windows apps such as MS-Office, and web sites such as Amazon, Facebook and StackExchange. And I look at these and I don't see many "so many screens" issues!

Indeed, the only applications having many windows I can think of is Visual Studio. Maybe also Visio, a little. But take Word – You have a ribbon and a main window. Or take Facebook: You have those lists on the left (Favorites, Lists, Groups etc.), the status middle, the adds and then the Contacts sidebar. But it's only one page.

Of course, I understand that in enterprise scenarios there are dashboad applications where multiple segments of the screen are updated from multiple non-related services. This I dig. But other scenarios?

So – What am I missing? What is the "multiple screens" monster Pirsm is supposed to be the silver bullet solution for? Shoud I invest in studying Prism in addition to learning WPF or ASP.NET MVC?

Best Answer

I guess the problem you are having is not Prism related. The question is about GUI design of an application, specifically, your question is about why use multiple screens (windows, pages, etc.).

You have found a good answer for simplifying user interface in the text of your question, namely many applications use 1 page at a time.

Multiple screen/page is usually, though fancy, is confusing for many users (this of course depends on your users skills) not only for programmers!

The 1 page strategy works for Word, Wizards, Configuration screens, Setup programs and many more.

When you use this approach you greatly simplify the programming of the GUI (in case you are trying to handle concurrency of data showing in many screens). Although 'binding' may be able to take care of part of this, still, it is not very easy in some cases.

My suggestion is that you stop programming and start designing the user interface based on the customer business function. Think of what the user needs to do for each business function. Determine what information is required from the system so the function be complete. Design the flow for this function based on that. Do this for the other functions, then review and refine your flow. Consider different user roles in this process. Eventually you will be able to find the optimal GUI design. Now, this may involve more than 1 page/screen but resist this unless it is necessary.

In short, design first before coding.

Good luck.

Related Topic