Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

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?

share|improve this question
3  
"But take Word - You have a ribbon and a main window": sure? If yes, have you used Word at least once? In fact, just from the only Home tab, you get as windows: Create New Style, Font, Paragraph, Tabs, Border, Border and Shading Options, Language, Frame, Numbering, Define New Number Format, Shortcut Key, Zoom, Find and Replace, Paste Special, Colors, Define New Bullet, etc. –  MainMa Nov 12 '11 at 21:39
    
Bonjour MainMa. You're now 24. I've used Word (together with WordPerfect) since about 1987 :) However, I understand now what you say: I opened the sequence "Styles"/"Create new style"/"Paragraph" and indeed four screens were opened (inluding the edited page) but they were modal - just one screen was acive at any time. –  user18254 Nov 13 '11 at 11:04
add comment

1 Answer 1

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.

share|improve this answer
    
Dear Emmand - Such wize words. But oh, the temptation :) –  user18254 Nov 13 '11 at 11:14
    
@Avi, Thank your for your note, I know it is easier to preach than practice! It is always tempting...:) –  Emmad Kareem Nov 13 '11 at 11:22
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.