Skip to Content
Programming WPF, 2nd Edition
book

Programming WPF, 2nd Edition

by Chris Sells, Ian Griffiths
August 2007
Intermediate to advanced
864 pages
25h 52m
English
O'Reilly Media, Inc.
Content preview from Programming WPF, 2nd Edition

Loading XAML

If you use the x:Class attribute to generate a class from your XAML file, you can instantiate the tree of objects defined in the XAML by creating an instance of the relevant class. However, you are not required to generate a class.

If you do not generate a class, there are two ways in which you can get from XAML to a tree of objects. You can either parse the XAML at runtime, or you can precompile it at build time into a binary form called BAML and load that BAML at runtime. The precompiled approach performs better and offers the benefit of being able to use code behind. However, runtime XAML parsing gives you the freedom to decide at runtime what XAML to use. Tools such as XamlPad obviously need to use runtime parsing, but it could also be useful if you want to generate XAML by running an underlying XML data source through an XSLT (although data binding often provides better solutions than runtime XAML generation—see the section on data-driven UI in Chapter 7).

Parsing XAML at Runtime

The System.Windows.Markup namespace defines a XamlReader class. This has a Load method, which takes either a Stream or an XmlReader. Example A-57 passes an XmlTextReader, which derives from XmlReader.

Example A-57. Parsing XAML at runtime

StringReader sr = new StringReader(@"
    <Canvas xmlns='http://schemas.microsoft.com/winfx/2006/xaml/presentation'>
        <Rectangle Width='30' Height='100' Fill='Red' />
    </Canvas>");
XmlTextReader xr = new XmlTextReader(sr);

Canvas tree = (Canvas) XamlReader.Load(xr); ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.

Read now

Unlock full access

More than 5,000 organizations count on O’Reilly

AirBnbBlueOriginElectronic ArtsHomeDepotNasdaqRakutenTata Consultancy Services

QuotationMarkO’Reilly covers everything we've got, with content to help us build a world-class technology community, upgrade the capabilities and competencies of our teams, and improve overall team performance as well as their engagement.
Julian F.
Head of Cybersecurity
QuotationMarkI wanted to learn C and C++, but it didn't click for me until I picked up an O'Reilly book. When I went on the O’Reilly platform, I was astonished to find all the books there, plus live events and sandboxes so you could play around with the technology.
Addison B.
Field Engineer
QuotationMarkI’ve been on the O’Reilly platform for more than eight years. I use a couple of learning platforms, but I'm on O'Reilly more than anybody else. When you're there, you start learning. I'm never disappointed.
Amir M.
Data Platform Tech Lead
QuotationMarkI'm always learning. So when I got on to O'Reilly, I was like a kid in a candy store. There are playlists. There are answers. There's on-demand training. It's worth its weight in gold, in terms of what it allows me to do.
Mark W.
Embedded Software Engineer

You might also like

Practical WPF Charts and Graphics

Practical WPF Charts and Graphics

Jack Xu
Illustrated WPF

Illustrated WPF

Daniel Solis
Programming C# 10

Programming C# 10

Ian Griffiths

Publisher Resources

ISBN: 9780596510374Errata Page