WPF 4 unleashed / Adam Nathan. p. cm. Includes index. ISBN 0. 1. Windows presentation foundation. 2. Application software. 3. Microsoft. WPF 4 raudone.info - Mehmet Akif SÖNMEZ. Pages·· MB·43 Downloads. Nathan, Adam. WPF 4 unleashed / Adam Nathan. p. cm. Includes. “I found Windows Presentation Foundation Unleashed to be an excellent and “ Windows Presentation Foundation Unleashed is the book that made WPF make.
|Language:||English, German, Hindi|
|Genre:||Fiction & Literature|
|ePub File Size:||28.49 MB|
|PDF File Size:||17.25 MB|
|Distribution:||Free* [*Registration needed]|
Contribute to adamshe/books development by creating an account on GitHub. Source: Adam Nathan “Windows Presentation Foundation Unleashed”, SAMS Publishing Developing applications with C#, WPF, and XAML. Pro WPF in C# is a thorough, authoritative guide to how WPF really works. Understand the fundamentals of WPF programming, from XAML to controls and.
Therefore, I wrote the first edition of this book, Windows Presentation Foundation Unleashed, with the following goals in mind: To provide a solid grounding in the underlying concepts, in a practical and approachable fashion. To answer the questions most people have when learning the technology and to show how commonly desired tasks are accomplished.
To be an authoritative source, thanks to input from members of the WPF team who designed, implemented, and tested the technology.
To be clear about where the technology falls short rather than selling the technol- ogy as the answer to all problems. To be an easily navigated reference that you can constantly come back to The first two editions of this book were far more successful than I ever imagined they would be. Who Should Read This Book? This book is for software developers who are interested in creating user interfaces for the Windows desktop.
NET Framework. At the very least, it should be an invaluable reference for your bookshelf. To summarize, this book does the following: Examines the WPF feature areas in incredible depth: Shows how to create popular user interface elements and leverage built-in controls such as the new Office-style Ribbon.
Explains how to develop and deploy all types of applications, including navigation- based applications, applications hosted in a web browser, and applications with great-looking nonrectangular windows. Explains how to create first-class custom controls for WPF. XAML is used heavily for a number of reasons: Whenever the mapping between XAML and a language such as C is not obvious, examples are shown in both representations.
Software Requirements This book targets version 4. The following software is required: A version of Windows that supports the. NET Framework 4. For earlier versions of Windows, you can download the. In addition, the following software is recommended: NET tools it includes.
This is also a free download from http: Visual Studio or later, which can be a free Express edition downloaded from http: A few examples are specific to features introduced in Windows Vista, Windows 7, and Windows 8. Some examples require a touchscreen or an equivalent touch digitizer.
The rest of the book applies equally to all relevant versions of Windows. Code Examples The source code for examples in this book can be downloaded from http: The following sections provide a summary of each part. Part I: Background This part includes the following chapters: Chapter 1: Why WPF?
Chapter 2: XAML Demystified. Chapter 3: NET programmers already understand.
Part II: Chapter 4: Sizing, Positioning, and Transforming Elements. Chapter 5: Layout with Panels. Chapter 6: Input Events: Chapter 7: Structuring and Deploying an Application. Chapter 8: Exploiting Windows Desktop Features Part II equips you with the knowledge to assemble and deploy a traditional-looking applica- tion although some fancier effects, such as transforms and nonrectangular windows, are also covered. Chapters 4 and 5 discuss arranging controls and other elements in a user interface.
Best Value download
Chapter 6 covers input events, including support for engaging touch user inter- faces. Chapter 7 examines several different ways to package and deploy WPF-based user interfaces to make complete applications.
Chapter 8 ends this part by showing slick ways to exploit features in the Windows desktop that can help make your application look modern. Part III: Controls This part includes the following chapters: Chapter 9: Content Controls.
Chapter Items Controls. Two categories of controls— content controls Chapter 9 and items controls Chapter 10 —are important and deep enough topics to merit their own chapters.
The rest of the controls are examined in Chapter Part IV: Features for Professional Developers This part includes the following chapters: Data Binding. Therefore, they are indispensable for professional developers who are serious about creating maintainable and robust applica- tions or components. These topics are less about the results visible to end users than they are about the best practices for accomplishing these results. Part V: Rich Media This part includes the following chapters: The support for 2D and 3D graphics, animation, video, and more enable you to create a stun- ning experience.
These features—and the way they are exposed—set WPF apart from previous systems. WPF lowers the barrier to incorporating such content in your software, so you might try some of these features that you never would have dared to try in the past!
Part VI: Advanced Topics This part includes the following chapters: User Controls and Custom Controls. Layout with Custom Panels. The fact that existing WPF controls can be radically restyled greatly reduces the need for creating custom controls.
The final chapter is especially inter- esting because it enables your WPF apps to use a feature designed for Windows Store apps. Conventions Used in This Book Various typefaces in this book identify new terms and other special items. These typefaces include the following: Typeface Meaning Italic Italic is used for new terms or phrases when they are initially defined and occa- sionally for emphasis.
Monospace Monospace is used for screen messages, code listings, and command samples, as well as filenames. In code listings, italic monospace type is used for placeholder text.
Code listings are colorized similar to the way they are colorized in Visual Studio.
A Digging Deeper sidebar presents advanced or? A FAQ sidebar presents a question more detailed information on a subject than is provided in the surrounding text. Tips often offer condition that can lead to an unexpected shortcuts or alternative approaches to or unpredictable result—and then tells you produce better results or to make a task how to avoid it. Logical and Visual Trees. NET programmers are already familiar with.
A handful of classes are fundamental to the inner workings of WPF and deserve a quick explanation before we get any further in the book. Figure 3. These 12 classes have the following significance: Object—The base class for all.
DispatcherObject—The base class meant for any object that wishes to be accessed only on the thread that created it. DependencyObject—The base class for any object that can support dependency properties, one of the main topics in this chapter.
Freezables, once frozen, can be safely shared among multiple threads, unlike all other DispatcherObjects. Frozen objects can never be unfrozen, but you can clone them to create unfrozen copies. Most Freezables are graphics primitives such as brushes, pens, and geometries or animation classes. Visual—The base class for all objects that have their own 2D visual representation. UIElement—The base class for all 2D visual objects with support for routed events, command binding, layout, and focus.
Visual3D—The base class for all objects that have their own 3D visual representa- tion. UIElement3D—The base class for all 3D visual objects with support for routed events, command binding, and focus, also discussed in Chapter Each ContentElement often requires multiple Visuals to render correctly spanning lines, columns, and pages.
FrameworkElement—The base class that adds support for styles, data binding, resources, and a few common mechanisms for controls, such as tooltips and context menus.
Control adds many properties to its FrameworkElement base class, such as Foreground, Background, and FontSize, as well as the ability to be completely restyled. In WPF, user interfaces are constructed from a tree of objects known as a logical tree. Listing 3.
The Window has a StackPanel child element described in Chapter 5 containing a few simple controls plus another StackPanel that contains Buttons. Because just about every dialog from Listing 3. For example, property values are sometimes propa- gated down the tree to child elements automatically, and raised events can travel up or down the tree. This behavior of property values is discussed later in this chapter, and this behavior of events is discussed in Chapter 6.
The logical tree exposed by WPF is a simplification of what is actually going on when the elements are rendered. You can think of the visual tree as an expansion of a logical tree, in which nodes are broken down into their core visual components. For example, although a ListBox is logically a single control, its default visual representation is composed of more primitive WPF elements: Not all logical tree nodes appear in the visual tree; only the elements that derive TIP from System.
Visual3D are XamlPadX tool mentioned in the preceding included. Other elements and simple chapter, have functionality for exploring the 3 string content, as in Listing 3.
These controls have other visual differences as the result of different default property values. For example, Button has a default Margin of 10 on all sides, whereas Label has a default Margin of 0. Because they enable you to peer inside the deep composition of WPF elements, visual trees can be surprisingly complex.
However, you can easily traverse both the logical and visual trees using the somewhat symmetrical System. LogicalTreeHelper and System. VisualTreeHelper classes. This requires adding x: Diagnostics; using System. Windows; using System.
WPF 4 Unleashed.pdf
Media; public partial class AboutDialog: TIP Visual trees like the one represented in Figure 3. The term visual tree is then used to describe any subtree that contains visual-only illogical?
In Figure 3. This enables you to navigate and visualize the visual tree. Navigating either tree can sometimes be done with instance methods on the elements themselves. FrameworkElement, the common base class for controls such as Button and Label, and its peer FrameworkContentElement both define a public Parent property representing the logical parent and a protected LogicalChildren property for the logical children.
Subclasses of these two classes often publicly expose their logical chil- dren in a variety of ways, such as in a public Children collection. Some classes, such as Button and Label, expose a Content property and enforce that the element can have only one logical child.
Dependency Properties WPF introduces a type of property called a dependency property that is used throughout the platform to enable styling, automatic data binding, animation, and more. You might first meet this concept with skepticism, as it complicates the picture of. NET types having simple fields, properties, methods, and events. But when you understand the problems that dependency properties solve, you will likely accept them as a welcome addition. Dependency Properties 63 A dependency property depends on multiple providers for determining its value at any point in time.
These providers could be an animation continuously changing its value, a parent element whose property value propagates down to its children, and so on. Arguably the biggest feature of a dependency property is its built-in ability to provide change notification.
The motivation for adding such intelligence to properties is to enable rich functionality directly from declarative markup. Button, for example, has more than public properties most of which are inherited from Control and its base classes!
Properties can be easily set in XAML directly or by using a design tool without any procedural code. But without the 3 extra plumbing in dependency properties, it would be hard for the simple action of setting properties to get the desired results without the need to write additional code.
In this section, we briefly look at the implementation of a dependency property to make this discussion more concrete, and then we dig deeper into some of the ways that depen- dency properties add value on top of plain.
NET properties: Change notification. Property value inheritance. Support for multiple providers Understanding most of the nuances of dependency properties is usually important only for custom control authors. However, even casual users of WPF need to be aware of what dependency properties are and how they work.
WPF 4.5 Unleashed
For example, you can only style and animate dependency properties. After working with WPF for a while, you might find yourself wishing that all properties would be dependency properties!
A Dependency Property Implementation In practice, dependency properties are just normal. DependencyProperty class. By convention, all DependencyProperty fields are public, static, and have a Property suffix. Several pieces of infrastructure require that you follow this convention: Dependency properties are usually created by calling the static DependencyProperty. Register method, which requires a name IsDefault , a property type bool , and the type of the class claiming to own the property Button.
Optionally via different overloads of Register , you can pass metadata that customizes how the property is treated by WPF, as well as callbacks for handling property value changes, coercing values, and validating values. Button calls an overload of Register in its static constructor to give the dependency property a default value of false and to attach a dele- gate for change notifications. Finally, the traditional. DependencyObject, the low-level base class from which all classes with dependency properties must derive.
GetValue returns the last value passed to SetValue or, if SetValue has never been called, the default value registered with the property. The IsDefault. But the. NET defining one much faster than doing all the property makes programmatic reading typing yourself! Dependency Properties 65 and writing of the property much more natural for consumers, and it enables the prop- erty to be set via XAML.
This is primarily because dependency properties were invented before. NET generics were widely used. On the surface, Listing 3.
WPF 4.5 Unleashed
However, because GetValue and SetValue internally use an efficient sparse storage system and because IsDefaultProperty is a static field rather than an instance field , the dependency property implementation saves per-instance memory compared to a typical. NET property.
If all the properties on WPF controls were wrappers around instance fields as most. NET properties are , they would consume a significant amount of memory because of all the local data attached to each instance. Having more than fields for each Button, more than fields for each Label, and so forth would add up quickly!
The benefits of the dependency property implementation extend to more than just memory usage, however. The implementation centralizes and standardizes a fair amount of code that property implementers would have to write to check thread access, prompt the containing element to be re-rendered, and so on.
AffectsRender flag to an overload of DependencyProperty. These actions can be re-rendering the appropriate elements, updating the current layout, refreshing data bind- ings, and much more.
One of the interesting features enabled by this built-in change notification is property triggers, which enable you to perform your own custom actions when a property value changes, without writing any procedural code. Without property triggers, you can attach two event handlers to each Button, one for its MouseEnter event and one for its MouseLeave event: The following concise Trigger object is just about all you need: This is automatically done by WPF!
The only trick is assigning this Trigger to each Button. You can apply them only inside a Style object, so an in-depth examination of property triggers is saved for Chapter In the meantime, to experiment with property triggers, you can apply the preceding Trigger to a Button by wrapping it in a few inter- mediate XML elements, as follows: A data trigger is a 3 form of property trigger that works for all. NET properties not just dependency proper- ties , also covered in Chapter An event trigger enables you to declaratively specify actions to take when a routed event covered in Chapter 6 is raised.
Unfortunately, this collection can only contain event triggers, so its name and type are misleading. Attempting to add a property trigger or data trigger to the collection causes an exception to be thrown at runtime. A simple example of this can be seen in Listing 3. Notice that the Window auto- matically resizes to fit all the content thanks to its slick SizeToContent setting! This affects even the Buttons and ListBoxItems, which are three levels down the logical tree.
Notice that the text in the StatusBar is unaffected by either of these values, despite the fact that it supports these two properties just like the other controls. The behavior of property value inheritance can be subtle in cases like this for two reasons: Not every dependency property participates in property value inheritance. Internally, dependency properties can opt in to inheritance by passing FrameworkPropertyMetadataOptions.
Inherits to DependencyProperty. There may be other higher-priority sources setting the property value, as explained in the next section.
In this case, the latter reason is to blame. A few controls, such as StatusBar, Menu, and ToolTip, internally set their font properties to match current system settings.
This way, users get the familiar experience of controlling their font via Control Panel. For example, if you add a Button as a logical child of the StatusBar in Listing 3.
Support for Multiple Providers WPF contains many powerful mechanisms that independently attempt to set the value of dependency properties. Without a well-defined mechanism for handling these disparate property value providers, the system would be a bit chaotic, and property values could be unstable.
Of course, as their name indicates, dependency properties were designed to depend on these providers in a consistent and orderly manner. This process happens automatically, thanks to the built-in change notification in dependency properties.
Step 1: Determine the Base Value Most of the property value providers factor into the base value calculation. Adam Nathan Best Sellers Rank: SlideShare Explore Search You. Submit Search. Successfully reported this slideshow. We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads.
You can change your ad preferences anytime.
Upcoming SlideShare. Like this presentation? Why not share! An annual anal Embed Size px. Start on. Show related SlideShares at end. WordPress Shortcode. Published in: Full Name Comment goes here. Are you sure you want to Yes No. Be the first to like this. No Downloads.Uri keyword, 51 X x: Therefore, the StackPanel declaration in Listing 3.
Chapter 7: Determine the Base Value Most of the property value providers factor into the base value calculation.
Returning false causes an exception to be thrown, canceling the entire process. Because just about every dialog from Listing 3.