Freigeben über


Scalable UI - in one line of XAML!

One of the great things about WPF is how easy it is to make a fully scalable UI. The above picture is an examply of a UI i made, with live reflections, menus and images, and with one line of XAML, it became fully scalable.

How was this acheived - by placing all of my UI in a ViewBox. I can then set rules about how i want it to scale. In the above picture, I set the Stretch proerty to Fill - this disregards the aspect ratio of the UI. I could have set it Uniform, which will preserve the aspect ratio.

But the best thing about the ViewBox is that everything is scaled. So where you used Pixel heights - for example in an animation where you change the height of an object - those animation are scaled too, so nothing breaks!

ViewBox rules.

Martin

Comments

  • Anonymous
    June 09, 2006
    This is sorely needed for windows applications that need to deal with a wide variety of DPI's and in my opinion one of WPF's biggest strengths.

    Can you post an example of using viewbox though? I am very new to WPF and using Expression I changed my document root to a Viewbox and then adding a Grid inside of it which worked but whenever I try to use Expression to add a child inside the grid it winds up replacing the grid. Using the XAML view works. It may just be a big in Expression but I'm wondering how you went about using it.
  • Anonymous
    June 09, 2006
    Sorry. Stupid me. I realized I must double click to set the "insertion point". I am reading your glass tutorial.
  • Anonymous
    June 09, 2006
    Hi,

    Actually, my postit sample does this too. The simplest way is to place a Viewbox as you top most element (below Window or Scene of course) and place a grid or canvas WITH a fixed size just inside... like so..

    <Window ...>
      <Viewbox Stretch="Fill" Width="800" Height="600">
         <Grid Width="800" Height="600">
            Some content in here
         </Grid>
       </Viewbox>
    </Window>

    You must bear in mind that a Viewbox will only take 1 child, hence why I put a grid in first and not some content.

    As for using expression, as a designer, there is definately a learning curve. There are some concepts, like control trees, layout panels, templating & styling which are new - previously, I would just draw! I know there is a curve for developers alike, there will be a lot of tools that they might not be immediately used too, such as gradient tools, pathing tools etc.

    But what I can definately say, is that this has now become an incredible productive environment for me. I can build great looking apps along side a developer in a matter of hours. Some (like the Postit or rotating in app) in minutes.

    If you are new to EID, check out the videos on http://www.microsoft.com/expression - great introduction to the tools and some of the basic concepts.

    Martin
  • Anonymous
    June 10, 2006
    Thanks Martin. I am also very impressed by your glass button tutorial. I am really looking forward to the next 2 parts. This stuff is great.