Skip to Main Content
Programming WPF, 2nd Edition
book

Programming WPF, 2nd Edition

by Chris Sells, Ian Griffiths
August 2007
Intermediate to advanced content levelIntermediate 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.
Start your free trial

You might also like

Programming C#, 4th Edition

Programming C#, 4th Edition

Jesse Liberty
Programming C# 10

Programming C# 10

Ian Griffiths

Publisher Resources

ISBN: 9780596510374Supplemental ContentErrata Page