Index

Symbols

(backslash), 30

{ } (curly braces), 29-30, 375

2D graphics

2D and 3D coordinate system transformation

explained, 594

Visual.TransformToAncestor method, 594-598

Visual3D.TransformToAncestor method, 598-603

Visual3D.TransformToDescendant method, 598-603

Brushes

BitmapCacheBrush class, 533

DrawingBrush class, 518-522

explained, 511

ImageBrush class, 522-523

LinearGradientBrush class, 513-516

as opacity masks, 525-527

RadialGradientBrush class, 517-518

SolidColorBrush class, 512

VisualBrush class, 523-525

drawings

clip art example, 489-490

Drawing class, 474

DrawingBrush class, 475

DrawingContext methods, 492

DrawingImage class, 475-477

DrawingVisual class, 475

GeometryDrawing class, 474-475

GlyphRunDrawing class, 474

ImageDrawing class, 474-476

Pen class, 487-489

VideoDrawing class, 474

effects, 527-529

explained, 473-474

geometries

aggregate geometries, 481

Bézier curves, 478

CombinedGeometry class, 484-485

defined, 477

EllipseGeometry class, 477

GeometryGroup class, 482-484

LineGeometry class, 477

PathGeometry class, 477-481

RectangleGeometry class, 477

representing as strings, 485-487

StreamGeometry class, 481

house example, 536

mapping to 3D, 539, 588-589

Shapes

clip art based on Shapes, 510-511

Ellipse class, 506

explained, 503-504

how they work, 507

Line class, 507-508

overuse of, 505

Path class, 509-510

Polygon class, 509

Polyline class, 508

Rectangle class, 505-506

transforms. See transforms

Visuals

custom rendering, 497

displaying on screen, 494-496

DrawingContext methods, 492

DrawingVisuals, 491-494

explained, 491

visual hit testing, 497-503

WPF 3.5 enhancements, 13

3D graphics

2D and 3D coordinate system transformation

explained, 594

Visual.TransformToAncestor method, 594-598

Visual3D.TransformToAncestor method, 598-603

Visual3D.TransformToDescendant method, 598-603

3D hit testing, 590-591

Cameras

blind spots, 543

coordinate systems, 540-542

explained, 540

LookDirection property, 542-546

MatrixCamera, 551

OrthographicCamera versus PerspectiveCamera, 549-551

Position property, 541-542

Transform property, 547

UpDirection property, 546-548

Z-fighting, 543

coordinate systems, 540-542

explained, 535-536

hardware acceleration

explained, 10

GDI and, 11

house example, 536-538

Lights, 540

Materials

AmbientMaterial, 573

combining, 576

DiffuseMaterial, 570-573

EmissiveMaterial, 574

explained, 569

SpecularMaterial, 575-576

Model3Ds

explained, 561

GeometryModel3D, 569

Lights, 561-568

Model3DGroup class, 582-584

pixel boundaries, 15

resolution independence, 10

texture coordinates, 582

Transform3Ds

combining, 560

explained, 552-553

house drawing example, 553-554

MatrixTransform3D class, 552, 560

RotateTransform3D class, 552, 557-560

ScaleTransform3D class, 552, 555-557

Transform3DGroup class, 552

TranslateTransform3D class, 552-555

Viewport2DVisual3D class, 588-589

Viewport3D class, 591-594

Visual3Ds

explained, 584

ModelVisual3D class, 585-586

UIElement3D class, 586-588

WPF 3.5 enhancements, 13

3D hit testing, 590-591

A

About dialog

attached events, 147-149

with font properties moved to inner StackPanel, 72-73

with font properties set on root window, 68

Help command, 173-174

initial code listing, 57-58

routed events, 144-146

absolute sizing, 113

accessing

binary resources

embedded in another assembly, 346

from procedural code, 347-348

at site of origin, 346-347

from XAML, 343-346

logical resources, 358

Action property (QueryContinueDragEventArgs class), 155

Activated event, 778-779

ActiveEditingMode property (InkCanvas control), 317

ActiveX controls, 710-714

ActualHeight property (FrameworkElements class), 80

ActualWidth property (FrameworkElements class), 80

AddBackEntry method, 200

AddHandler method, 142-143

AddToSchedule method, 779

advantages of WPF, 11

Aero Glass, 233-236

aggregate geometries, 481

AllowPartiallyTrustedCallers attribute, 210

AlternationCount property (ItemsControl class), 256

AlternationIndex property (ItemsControl class), 256

AmbientLight, 562, 567-568

AmbientMaterial class, 573

AnchoredBlock class, 326-327

AND relationships (logical), 429-430

Angle property (RotateTransform class), 88

AngleX property (SkewTransform class), 92

AngleY property (SkewTransform class), 92

animation

animation classes

AutoReverse property, 616

BeginTime property, 614-615

By property, 614

DoubleAnimation, 609-610

Duration property, 612

EasingFunction property, 618

explained, 607-608

FillBehavior property, 619

From property, 612-614

IsAdditive property, 619

IsCumulative property, 619

lack of generics, 608-609

linear interpolation, 610-611

RepeatBehavior property, 616-617

SpeedRatio property, 615

To property, 612-614

and data binding, 630

easing functions, 14

BackEase, 638

BounceEase, 638

CircleEase, 638

EasingMode property, 635

ElasticEase, 638

ExponentialEase, 638

power easing functions, 635-636

SineEase, 638

writing, 638-640

explained, 605

frame-based animation, 607

keyframe animation

discrete keyframes, 632-634

easing keyframes, 634

explained, 628

linear keyframes, 629-631

spline keyframes, 631-632

path-based animations, 635

reusing animations, 611

timer-based animation, 606-607

and Visual State Manager

button ControlTemplate with VisualStates, 641-644

transitions, 645-649

with XAMLEventTriggers/Storyboards

explained, 619-620

starting animations from property triggers, 626-627

Storyboards as Timelines, 627-628

TargetName property, 623-624

TargetProperty property, 620-623

annotations, adding to flow documents, 331-334

AnnotationService class, 331

APIs, Windows Runtime APIs, 771-772

Application class

creating applications without, 186

events, 184

explained, 181-182

Properties collection, 185

Run method, 182-183

single-instance applications, 186

Windows collection, 184

application menu (Ribbon), 291-292

ApplicationCommands class, 171

ApplicationPath property (JumpTask), 222

applications

associating Jump Lists with, 218

embedding Win32 controls in

explained, 673-674

keyboard navigation, 683-687

Webcam control, 674-683

embedding Windows Forms controls

explained, 695-696

PropertyGrid, 696-699

embedding WPF controls in

Win32 applications, 688-695

Windows Forms applications, 700-704

gadget-style applications, 205-206

loose XAML pages, 213-214

multiple-document interface (MDI), 185

navigation-based desktop applications

explained, 193-194

hyperlinks, 197-198

journal, 198-200

Navigate method, 196-197

navigation containers, 194-196

navigation events, 200-201

Page elements, 194-196

returning data from pages, 203-204

sending data to pages, 202-203

standard desktop applications

Application class, 181-186

application state, 192

ClickOnce, 192-193

common dialogs, 188-189

custom dialogs, 189-190

explained, 177-178

multithreaded applications, 187

retrieving command-line arguments in, 184

single-instance applications, 186

splash screens, 187-188

Window class, 178-180

Windows Installer, 192

XAML Browser applications

ClickOnce caching, 208

deployment, 211

explained, 207-208

full-trust XAML Browser applications, 210

integrated navigation, 210-211

limitations, 208-209

on-demand download, 212-213

security, 211

XAML Browser Applications (XBAPs), 207

Apply method, 229

AppUserModelIDs, 772-773

arbitrary objects, content and, 243

ArcSegment class, 478

Arguments keyword, 47-49

Arguments property (JumpTask), 222

ArrangeOverride method, 750-751

Array keyword, 52

associating Jump Lists with applications, 218

asynchronous data binding, 401

AsyncRecords keyword, 49

attached events, 147-149

attached properties

About dialog example, 72-74

as extensibility mechanism, 75

attached property providers, 74-75

defined, 72

attached property providers, 74-75

attenuation, 564

attributes, setting, 21

audio

embedded resources, 661

explained, 651

MediaElement, 654-656

MediaPlayer, 653-654

MediaTimeline, 654-656

SoundPlayer, 652

SoundPlayerAction class, 652-653

speech recognition

converting spoken words into text, 665-667

specifying grammar with GrammarBuilder, 668-669

specifying grammar with SRGS, 667-668

speech synthesis

explained, 662

GetInstalledVoices method, 662

PromptBuilder class, 663-665

SelectVoice method, 662

SelectVoiceByHints method, 662

SetOutputToWaveFile method, 663

SpeakAsync method, 662

Speech Synthesis Markup Language (SSML), 663-665

SpeechSynthesizer, 662

SystemSounds class, 652

toast notifications, 778

“Auto” length, 79

automation

automation IDs, 269

UI Automation, supporting in custom controls, 745-746

AutoReverse property (animation classes), 616

autosizing, 111-113

AxisAngleRotation3D class, 557-558

AxMsTscAxNotSafeForScripting control, 712-713

B

BackEase function, 638

backgrounds, setting, 359

backslash (), 30

BAML (Binary Application Markup Language)

decompiling back into XAML, 43-44

defined, 41

Baml2006Reader class, 784

base values of dependency properties, calculating, 69-70

BaseValueSource enumeration, 70

BeginTime property (animation classes), 614-615

behavior

adding to custom controls

behavior, 733-735

code-behind file, 730

initial implementation, 729-733

resources, 730-731

creating for user controls, 721-723

Bézier curves, 478

BezierSegment class, 478

Binary Application Markup Language (BAML)

decompiling back into XAML, 43-44

defined, 41

binary resources

accessing

from procedural code, 347-348

resources at site of origin, 346-347

resources embedded in another assembly, 346

from XAML, 343-346

defining, 342-343

explained, 341

localizing

creating satellite assembly with LocBaml, 349

explained, 348

marking user interfaces with localization IDs, 349

preparing projects for multiple cultures, 348

Binding object, 361

binding

to .NET properties, 365-367

to collections, 369-372

to entire objects, 367-368

to UIElement, 368

ElementName property, 364

INotifyDataErrorInfo interface, 408-409

IsAsync property, 401

in procedural code, 361-363

RelativeSource property, 365

removing, 363

sharing source with DataContext, 372-373

StringFormat property, 374

TargetNullValue property, 364

UpdateSourceExceptionFilter property, 408

UpdateSourceTrigger property, 404

validation rules, 405-409

ValidationRules property, 406

in XAML, 363-365

binding. See data binding

Binding.DoNothing values, 384

BindingMode enumeration, 403

BitmapCache class, 531-533

BitmapCacheBrush class, 533

BitmapEffect, 528

bitmaps

BitmapCache class, 531-533

BitmapCacheBrush class, 533

BitmapEffect, 528

nearest-neighbor bitmap scaling, 310

WriteableBitmap class, 13

BitmapScalingMode property (RenderOptions), 306

BlackoutDates property (Calendar control), 338-339

Blend, 12

blind spots (cameras), 543

Block TextElements

AnchoredBlock class, 326-327

BlockUIContainer, 321

List, 320

Paragraph, 320

sample code listing, 321-324

Section, 320

Table, 320

BlockUIContainer Blocks, 321

BlurEffect, 527-528

Boolean keyword, 49

BooleanToVisibilityConverter, 382-383

Bottom property (Canvas), 98

BounceEase function, 638

BrushConverter type converter, 28

brushes

applying without logical resources, 350-351

BitmapCacheBrush class, 533

consolidating with logical resources, 351-353

explained, 511

ImageBrush class, 522-523

as opacity masks, 525-527

LinearGradientBrush class, 513-516

RadialGradientBrush class, 517-522

SolidColorBrush class, 512

VisualBrush class, 523-525

bubbling, 143

BuildWindowCore class, 680

built-in commands, 171-175

Button class, 63-64, 244-245

ButtonAutomationPeer class, 245

ButtonBase class, 243-244

buttons

Button class, 244-245

button ControlTemplate with VisualStates, 641-644

ButtonAutomationPeer class, 245

ButtonBase class, 243-244

CheckBox class, 246

defined, 243

RadioButton class, 246-248

RepeatButton class, 245

styling with built-in animations, 624-626

ToggleButton class, 245-246

By property (animation classes), 614

Byte keyword, 49

C

C++/CLI, 677-678

cached composition

BitmapCache class, 531-533

BitmapCacheBrush class, 533

Viewport2DVisual3D support for, 589

caching (ClickOnce), 208

Calendar control, 336-339

calendar controls

Calendar, 336-339

DatePicker, 339-340

Cameras

blind spots, 543

coordinate systems, 540-542

explained, 540

LookDirection property, 542-546

MatrixCamera, 551

OrthographicCamera versus PerspectiveCamera, 549-551

Position property, 541-542

Transform property, 547

UpDirection property, 546-548

Z-fighting, 543

CAML (Compiled Application Markup Language), 42

cancel buttons, 244

Cancel method, 167

canceling toast notifications, 780

CanExecute method, 171

CanExecuteChanged method, 171

CanUserAddRows property (DataGrid), 278

CanUserDeleteRows property (DataGrid), 278

Canvas, 98-100, 119. See also SimpleCanvas

capturing mouse events, 155-156

cells (DataGrid), selecting, 275

Center property (RadialGradientBrush), 517

CenterX property

RotateTransform class, 88-90

SkewTransform class, 92

CenterY property

RotateTransform class, 88-90

SkewTransform class, 92

change notification (dependency properties), 65-67

Char keyword, 50

CheckBox class, 246

child object elements

content property, 31-32

dictionaries, 33-34

lists, 32-33

processing rules, 36

values type-converted to object elements, 34

/clr compiler option, 682

CircleEase function, 638

class hierarchy, 55-57

Class keyword, 40-41, 50

ClassAttributes keyword, 50

classes. See specific classes

ClassModifier keyword, 50

ClearAllBindings method, 363

ClearBinding method, 363

ClearHighlightsCommand, 331

clearing

bindings, 363

local values, 71

ClearValue method, 71

CLI (Common Language Infrastructure), 677

Click event, 243-244

clickable cube example, 586-588

ClickCount property (MouseButtonEventArgs), 154

ClickMode property (ButtonBase class), 243

ClickOnce, 192-193

ClickOnce caching, 208

with unmanaged code, 193

clients, pure-XAML Twitter client, 412-414

clip art example, 489-490

clip art based on Shapes, 510-511

drawing-based implementation, 489-490

DrawingContext-based implementation, 493-494

WindowHostingVisual.cs file, 495

clipboard interaction (DataGrid), 276

ClipboardCopyMode property (DataGrid), 276

clipping, 122-124

ClipToBounds property (panels), 123

clr-namespace directive, 35

Code keyword, 50

code-behind files, 40, 730

CoerceValueCallback delegate, 71

cold start time, 187

Collapsed value (Visibility enumeration), 82

collections

binding to, 369-372

customizing collection views

creating new views, 393-395

explained, 385

filtering, 391

grouping, 387-390

navigating, 391-392

sorting, 385-387

dictionaries, 33-34

ItemsSource, 277

lists, 32-33

Properties, 185

SortDescriptions, 386

Triggers, 67

Windows, 184

CollectionViewSource class, 393

color

color brushes

applying without logical resources, 350-351

consolidating with logical resources, 351-353

LinearGradientBrush class, 513-516

RadialGradientBrush class, 517-518

SolidColorBrush class, 512

color space profiles, 513

toast notifications, 775

color brushes

applying without logical resources, 350-351

consolidating with logical resources, 351-353

LinearGradientBrush class, 513-516

RadialGradientBrush class, 517-518

SolidColorBrush class, 512

Color structure, 512

columns

DataGrid

auto-generated columns, 274-275

column types, 273-274

freezing, 277

Grid

sharing row/column sizes, 117-119

sizing, 112-116

CombinedGeometry class, 484-485

combining

Materials, 576

Transform3Ds, 560

transforms, 94

ComboBox control

ComboBoxItem objects, 266-267

customizing selection box, 262-265

events, 262

explained, 262

IsEditable property, 262

IsReadOnly property, 262

SelectionChanged event, 266

ComboBoxItem objects, 266-267

ComCtl32.dll, 238-239

command-line arguments, retrieving, 184

commands. See also specific commands

built-in commands, 171-175

controls with built-in command bindings, 175-176

executing with input gestures, 175

explained, 170-171

implementing with custom controls, 741

commas in geometry strings, 487

common dialogs, 188-189

Common Language Infrastructure (CLI), 677

Compiled Application Markup Language, 42

compiling XAML, 39-41

Complete method, 167

CompleteQuadraticEase class, 640

ComponentCommands class, 172

CompositeCollection class, 410

CompositionTarget_Rendering event handler, 709

conflicting triggers, 429

ConnectionId keyword, 50

consolidating routed event handlers, 149-150

ConstantAttenuation property (PointLights), 564

containers

Expander class, 253-254

Frame class, 251-252

GroupBox class, 253

Label class, 248

navigation containers, 194-196

ToolTop class, 249-251

ContainerUIElement3D class, 588

Content build action, 342

content controls

and arbitrary objects, 243

buttons

Button class, 244-245

ButtonBase class, 243-244

CheckBox class, 246

defined, 243

RadioButton class, 246-248

RepeatButton class, 245

ToggleButton class, 245-246

containers

Expander class, 253-254

Frame class, 251-252

GroupBox class, 253

Label class, 248

ToolTip class, 249-251

ContentControl class, 242

defined, 242

content overflow, handling

clipping, 122-124

explained, 122

scaling, 126-130

scrolling, 124-126

content property, 31-32

ContentControl class, 435-437

Frame class, 252

ContentControl class, 242, 435-437

ContentElement class, 56

ContextMenu control, 301-302

ContextMenuService class, 302

contextual tabs, 294-295

ContextualTabGroupHeader property (RibbonTab), 294

Control class, 57

control parts, 740-741

control states, 741-745

control templates

editing, 457-458

explained, 430-431

mixing with styles, 456-457

named elements, 434

reusability of, 438-440

simple control template, 431-432

target type, restricting, 434-435

templated parent properties, respecting

Content property (ContentControl class), 435-437

hijacking existing properties for new purposes, 441

other properties, 438-440

triggers, 432-434

visual states

respecting with triggers, 442-446

respecting with VSM (Visual State Manager), 447-455

controls

ActiveX controls, 710-714

built-in command bindings, 175-176

buttons

Button class, 244-245

ButtonBase class, 243-244

CheckBox class, 246

defined, 243

RadioButton class, 246-248

RepeatButton class, 245

ToggleButton class, 245-246

Calendar, 336-339

ComboBox

ComboBoxItem objects, 266-267

customizing selection box, 262-265

events, 262

explained, 262

IsEditable property, 262

IsReadOnly property, 262

SelectionChanged event, 266

containers

Expander class, 253-254

Frame class, 251-252

GroupBox class, 253

Label class, 248

ToolTip class, 249-251

ContextMenu, 301-302

control parts, 447-449

control states, 449-455

custom controls, creating, 10

behavior, 729-735

code-behind file, 730

commands, 741

control parts, 740-741

control states, 741-745

explained, 717-718

generic resources, 737-738

resources, 730-731

UI Automation, 745-746

user controls versus custom controls, 718

user interfaces, 735-738

DataGrid

auto-generated columns, 274-275

CanUserAddRows property, 278

CanUserDeleteRows property, 278

clipboard interaction, 276

ClipboardCopyMode property, 276

column types, 273-274

displaying row details, 276-277

editing data, 277-278

EnableColumnVirtualization property, 276

EnableRowVirtualization property, 276

example, 272-273

freezing columns, 277

FrozenColumnCount property, 277

RowDetailsVisibilityMode property, 277

selecting rows/cells, 275

SelectionMode property, 275

SelectionUnit property, 275

virtualization, 276

DatePicker, 339-340

explained, 241-243

GridView, 270-271

InkCanvas, 316-318

ItemsControl class, 255-256

AlternationCount property, 256

AlternationIndex property, 256

DisplayMemberPath property, 256-257

HasItems property, 256

IsGrouping property, 256

IsTextSearchCaseSensitive property, 265

IsTextSearchEnabled property, 265

Items property, 255

ItemsPanel property, 256-260

ItemsSource property, 256

scrolling behavior, controlling, 260-261

ListBox

automation IDs, 269

example, 267-268

scrolling, 269

SelectionMode property, 268

sorting items in, 269

support for multiple selections, 268

ListView, 270-271

Menu, 298-301

PasswordBox, 316

ProgressBar, 335

Ribbon

application menu, 291-292

contextual tabs, 294-295

example, 278-281

galleries, 297-298

IsDropDownOpen property, 280

IsHostedInRibbonWindow property, 281

IsMinimized property, 280

key tips, 289-290

minimizing, 280

Quick Access toolbar, 292-294

resizing, 284-289

ribbon controls, 281-284, 288-289

RibbonGroup, 279, 286-288

RibbonTab, 279, 285-286

RibbonWindow, 280-281

ScreenTips, 295-296

WindowIconVisibility property, 281

RichTextBox, 316

ScrollViewer, 124-126

Selector class, 261

Slider, 335-336

StatusBar, 307-308

TabControl, 271-272

TextBlock

explained, 313

explicit versus implicit runs, 314

properties, 313

support for multiple lines of text, 315

whitespace, 314

TextBox, 315

ToolBar, 304-306

TreeView, 302-304

user controls, creating

behavior, 721-723

dependency properties, 724-727

explained, 717-718

protecting controls from accidental usage, 723-724

routed events, 727-728

user controls versus custom controls, 718

user interfaces, 719-721

ControlTemplate class

ControlTemplate with triggers, 432-434

editing, 457-458

mixing with styles, 456-457

named elements, 434

simple ControlTemplate, 431-432

TargetType property, 434-435

templated parent properties, respecting, 435-437

Convert method, 381

converting spoken words into text, 665-667

ConvertXmlStringToObjectGraph method, 795

coordinate systems, 540-542

CountToBackgroundConverter class, 380-383

CreateBitmapSourceFromHBitmap method, 704

CreateHighlightCommand, 331

CreateInkStickyNoteCommand, 331

CreateTextStickyNoteCommand, 331

CreateToastNotifier method, 775

CreateWindow method, 681

Cube example

clickable cube, 586-588

cube button style, 592-593

cube of buttons and small purple cube, 595-597

initial code listing, 583-584

TextBlocks, 599-602

culture, preparing projects for multiple cultures, 348

curly braces ({}), 29-30

CurrentItem property (ICollectionView), 391

curves, Bézier, 478

CustomCategory property (JumpTask), 223-224

customizing

advantages/disadvantages, 416

collection views

creating new views, 393-395

explained, 385

filtering, 391

grouping, 387-390

navigating, 391-392

sorting, 385-387

color space profiles, 513

controls, creating, 10

behavior, 729-735

commands, 741

control parts, 740-741

control states, 741-745

explained, 717-718

generic resources, 737-738

UI Automation, 745-746

user controls versus custom controls, 718

user interfaces, 735-738

data display, 383-384

data flow, 403-405

dialogs, 189-190

JumpTask behavior, 221-224

keyboard navigation, 306

panels

communication between parents and children, 748-751

explained, 747-748

rendering, 497

selection boxes (ComboBox control), 262-265

sorting, 387

taskbar

explained, 230

taskbar item progress bars, 230

taskbar overlays, 231

thumb buttons, 232-233

thumbnail content, 231

D

D3DImage class, 704-710

DashStyle class, 488-489

DashStyle property (Pen class), 488

data binding

animation and, 630

asynchronous data binding, 401

Binding object

binding to .NET properties, 365-367

binding to collections, 369-372

binding to entire objects, 367-368

binding to UIElement, 368

ElementName property, 364

INotifyDataErrorInfo interface, 408-409

IsAsync property, 401

in procedural code, 361-363

RelativeSource property, 365

removing, 363

sharing source with DataContext, 372-373

StringFormat property, 374

TargetNullValue property, 364

UpdateSourceExceptionFilter property, 408

UpdateSourceTrigger property, 404

validation rules, 405-409

ValidationRules property, 406

in XAML, 363-365

canceling temporarily, 384

collection views, customizing

creating new views, 393-395

explained, 385

filtering, 391

grouping, 387-390

navigating, 391-392

sorting, 385-387

CompositeCollection class, 410

data flow, customizing, 403-405

data providers

explained, 396

ObjectDataProvider class, 400-402

XmlDataProvider class, 396-400

defined, 361

Language Integrated Query (LINQ), 396

to methods, 402

MultiBinding class, 410-411

PriorityBinding class, 411-412

pure-XAML Twitter client, 412-414

rendering, controlling

data templates, 376-379

explained, 373-374

string formatting, 374-376

value converters, 380-385

troubleshooting, 383

WPF 3.5 features, 13

WPF 4.5 enhancements, 15

data flow, customizing, 403-405

Data property (DragEventArgs class), 154

data providers

explained, 396

ObjectDataProvider class, 400-402

XmlDataProvider class, 396-400

data templates, 376-379

HierarchicalDataTemplate, 398-399

template selectors, 380

data triggers, 67, 427-428

data types

bridging incompatible data types, 380-383

DateTime, 780

DateTimeOffset, 780

in XAML2009, 46

DataContext property, 372-373

DataGrid control

CanUserAddRows property, 278

CanUserDeleteRows property, 278

clipboard interaction, 276

ClipboardCopyMode property, 276

column types, 273-275

displaying row details, 276-277

editing data, 277-278

EnableColumnVirtualization property, 276

EnableRowVirtualization property, 276

example, 272-273

freezing columns, 277

FrozenColumnCount property, 277

RowDetailsVisibilityMode property, 277

selecting rows/cells, 275

SelectionMode property, 275

SelectionUnit property, 275

virtualization, 276

DataGridCheckBoxColumn, 274

DataGridComboBoxColumn, 274

DataGridHyperlinkColumn, 273

DataGridTemplateColumn, 274

DataGridTextColumn, 273

DataTrigger class, 427-428

DatePicker control, 339-340

DateTime data type, 780

DateTimeOffset data type, 780

DateValidationError event, 340

DayOfWeek enumeration, 339

DeadCharProcessedKey property (KeyEventArgs event), 150

debugger (Visual C++), 691

Decimal keyword, 50

declaration context, 373

declarative programming, 10

decorators, 127

default buttons, 244

default styles, 70

defining

binary resources, 342-343

object elements, 21

properties, 49

delegates

CoerceValueCallback, 71

delegate contravariance, 150

ValidateValueCallback, 72

DeleteStickyNotesCommand, 331

dependency properties, 419-420

adding to user controls, 724-727

attached properties

About dialog example, 72-74

as extensibility mechanism, 75

attached property providers, 74-75

defined, 72

attached property providers, 74-75

change notification, 65-67

explained, 62-63

hijacking, 441

implementation, 63-65

property triggers, 65-67

property value inheritance, 67-69

support for multiple providers

applying animations, 71

coercion, 71

determining base values, 69-70

evaluating, 71

explained, 69

validation, 72

DependencyObject class, 56, 64

DependencyPropertyHelper class, 70

deployment

ClickOnce, 192-193

Windows Installer, 192

WPF 3.5 enhancements, 14

WPF 4 enhancements, 15

XAMLBrowser applications, 211

DesiredSize property (FrameworkElements class), 79

desktop applications. See Windows desktop applications

desktop features. See Windows desktop features

DestroyWindowCore class, 680

device-independent pixels, 82

DialogFunction method, 690

dialogs

About dialog

with font properties moved to inner StackPanel, 72-73

with font properties set on root window, 68

initial code listing, 57-58

common dialogs, 188-189

custom dialogs, 189-190

dialog results, 190

modal dialogs

launching from Win32 applications, 695

launching from Windows Forms applications, 704

launching from WPF applications, 688, 699

modeless dialogs, 178

TaskDialogs, 236-239

dictionaries, 33-34, 46

DiffuseMaterial, 570-573

direct routing, 143

Direct3D, 10

Direction property

DirectionalLight, 562

PointLights, 566

DirectionalLight, 562-563

directives. See specific directives

DirectX

development of, 8

versus WPF, 11-12

when to use, 11-12

WPF interoperability, 13, 704-710

discrete keyframes, 632-634

Dismissed event, 779

DispatcherObject class, 56

DispatcherPriority enumeration, 187

DispatcherTimer class, 606-607

DisplayDateEnd property (Calendar control), 337

DisplayDateStart property (Calendar control), 337

displaying

flow documents, 329-331

Visuals on screen, 494-496

DisplayMemberPath property, 256-257, 369

Dock property (DockPanel), 105

DockPanel

examples, 105-107

explained, 105

interaction with child layout properties, 107-108

mimicking with Grid, 119

properties, 105

documents, flow documents

annotations, 331-334

Blocks, 320-327

creating, 318-319

defined, 318

displaying, 329-331

Inlines, 324-329

DoNothing value (Binding), 384

Double keyword, 50

DoubleAnimation class, 609-610

download groups, 212

DownloadFileGroupAsync method, 213

drag-and-drop events, 154-155

DragEventArgs class, 154-155

Drawing class, 474

DrawingBrush class, 475, 518-522

DrawingContext class

clip art example, 493-494

methods, 492

DrawingImage class, 475-477

drawings

clip art example, 489-490

Drawing class, 474

DrawingBrush class, 475

DrawingContext methods, 492

DrawingImage class, 475-477

DrawingVisual class, 475

geometries. See geometries

GeometryDrawing class, 474-475

GlyphRunDrawing class, 474

ImageDrawing class, 474-476

Pen class, 487-489

VideoDrawing class, 474

DrawingVisual class, 475

explained, 491

filling with content, 491-494

DropDownOpened event, 262

DropShadowEffect, 527-528

duration of animations, controlling, 612

Duration property (animation classes), 612

DwmExtendFrameIntoClientArea method, 233-235

dynamic versus static resources, 353-355

DynamicResource markup extension, 354-355

E

Ease method, 638

EaseIn method, 640-641

EaseInOut method, 640-641

easing functions, 14

easing keyframes, 634

EasingFunction property (animation classes), 618

EasingFunctionBase class, 639

EasingMode property (easing functions), 635

editing

control templates, 457-458

DataGrid data, 277-278

EditingCommands class, 172

EditingMode property (InkCanvas control), 317

EditingModeInverted property (InkCanvas control), 317

effects, 527-529

ElasticEase function, 638

element trees. See trees

ElementHost class, 700-702

ElementName property (Binding object), 364

elements. See object elements; property elements

EllipseGeometry class, 477

embedded resources, 661

EmbeddedResource build action, 343

embedding

ActiveX controls in WPF applications, 710-714

Win32 controls in WPF applications

explained, 673-674

keyboard navigation, 683-687

Webcam control, 674-683

Windows Forms controls in WPF applications

explained, 695-696

PropertyGrid, 696-699

WPF controls in Win32 applications

HwndSource class, 688-691

layout, 692-695

WPF controls in Windows Forms applications

converting between two representatives, 703-704

ElementHost class, 700-702

launching modal dialogs, 704

EmissiveMaterial class, 574

EnableClearType property (BitmapCache class), 532

EnableColumnVirtualization property (DataGrid), 276

EnableRowVirtualization property (DataGrid), 276

EnableVisualStyles method, 699

EndLineCap property (Pen class), 487

EndMember value (NodeType property), 787

EndObject value (NodeType property), 787

EndPoint property (LinearGradientBrush), 514

enumerations

BaseValueSource, 70

BindingMode, 403

DayOfWeek, 339

DispatcherPriority, 187

GeometryCombineMode, 484

GradientSpreadMethod, 515

JumpItemRejectionReason, 228

Key, 150-152

MouseButtonState, 153

PixelFormats, 311

RoutingStrategy, 143

ShutdownMode, 184

Stretch, 127

StretchDirection, 127

TileMode, 521

UpdateSourceTrigger, 404

Visibility, 82-83

EraseByPoint value (InkCanvasEditingMode), 318

EraseByStroke value (InkCanvasEditingMode), 318

error handling, 407-408

Error ProgressState, 230

ErrorsChanged event, 408

EscapePressed property (QueryContinueDragEventArgs class), 155

Euler angles, 558

EvenOdd fill (FillRule property), 480

events

attributes, 21

Click, 243-244

DateValidationError, 340

DropDownOpened, 262

event handlers, 49

event wrappers, 142

JumpItemsRejected, 228

JumpItemsRemovedByUser, 228

keyboard events, 150-152

mouse events

capturing, 155-156

drag-and-drop events, 154-155

explained, 152-153

MouseButtonEventArgs, 154

MouseEventArgs, 153-154

MouseWheelEventArgs, 154

transparent and null regions, 153

navigation events, 200-201

order of processing, 22

rendering, 607

routed events

About dialog example, 144-146

adding to user controls, 727-728

attached events, 147-149

consolidating routed event handlers, 149-150

defined, 141

explained, 141-142

implementation, 142-143

RoutedEventArgs class, 144

routing strategies, 143-144

stopping, 147

SelectedDatesChanged, 340

SelectionChanged, 261, 266

stylus events, 156-158

toast notification events, 778-779

touch events

basic touch events, 159-162

explained, 158

manipulation events, 162-170

triggers, 67

WPF 4.5 enhancements, 15

wrappers, 142

EventTriggers, 619-620

evolution of WPF. See releases of WPF

ExceptionValidationRule object, 407

Execute method, 171

executing commands with input gestures, 175

Expander class, 253-254

Expansion property (ManipulationDelta class), 163

explicit sizes, avoiding, 79

explicit versus implicit runs, 314

ExponentialEase function, 638

Expression Blend, 12

expressions, 71

ExtendGlassFrame method, 235

extensibility mechanisms, attached properties as, 75

extensibility of XAML, 35

Extensible Application Markup Language. See XAML

F

factoring XAML, 355-356

FactoryMethod keyword, 47-50

Failed event, 779

FanCanvas, 764-768

FieldModifier keyword, 50

FileInputBox control

behavior, 721-723

dependency properties, 724-727

protecting from accidental usage, 723-724

routed events, 727-728

user interface, 719-721

files. See also specific files

code-behind files, 40

MainWindow.xaml.cs, 160-161, 168-169

raw project files, opening in Visual Studio, 348

VisualStudioLikePanes.xaml, 134-136

VisualStudioLikePanes.xaml.cs, 136-140

FillBehavior property (animation classes), 619

FillRule property (PathGeometry class), 480-481

Filter property (ICollectionView), 391

filtering, 391

finding type converters, 28

FindResource method, 357

FirstDayOfWeek property (Calendar control), 339

Flat line cap (Pen), 488

flow documents

annotations, 331-334

Blocks

AnchoredBlock class, 326-327

BlockUIContainer, 321

List, 320

Paragraph, 320

sample code listing, 321-324

Section, 320

Table, 320

creating, 318-319

defined, 318

displaying, 329-331

Inlines

AnchoredBlock, 326-327

defined, 324-325

InlineUIContainer, 329

LineBreak, 327

Span, 325-326

FlowDirection property (FrameworkElements class), 85-86

FlowDocument element, 318

FlowDocumentPageViewer control, 329

FlowDocumentReader, 331-333

FlowDocumentReader control, 329

FlowDocumentScrollViewer control, 329

FontSizeConverter type converter, 28

Form1.cs file, 700-703

FormatConvertedBitmap class, 310

formatting strings, 374-376

Frame class, 194-196, 251-252

frame-based animation, 607

FrameworkContentElement class, 57, 62, 318

FrameworkElement class, 62

explained, 57

Triggers property, 67

FrameworkElements class

ActualHeight property, 80

ActualWidth property, 80

DesiredSize property, 79

FlowDirection property, 85-86

Height property, 78-80

HorizontalAlignment property, 83-84

HorizontalContentAlignment property, 84-86

LayoutTransform property, 86

Margin property, 80-82

Padding property, 80-82

RenderSize property, 79

RenderTransform property, 86

VerticalAlignment property, 83-85

Visibility property, 82-83

Width property, 78-80

FrameworkPropertyMetadata, 727

Freezable class, 56

freezing columns, 277

From property (animation classes), 612-614

FromArgb method, 703

FrozenColumnCount property (DataGrid), 277

full-trust XAML Browser applications, 210

functions. See specific functions

G

gadget-style applications, 205-206

galleries, RibbonGallery control, 297-298

GDI (graphics device interface), 8

hardware acceleration and, 11

GDI+, 8

generated source code, 42

generic dictionaries, 467, 737-738

generics support (XAML2009), 45

geometries

aggregate geometries, 481

Bézier curves, 478

CombinedGeometry class, 484-485

defined, 477

EllipseGeometry class, 477

Geometry3D class, 576

GeometryGroup class, 482-484

LineGeometry class, 477

MeshGeometry3D class, 576-577

Normals property, 579-581

Positions property, 577

TextureCoordinates property, 581

TriangleIndices property, 578-579

PathGeometry class

ArcSegment, 478

BezierSegment, 478

example, 478-480

explained, 477

FillRule property, 480-481

LineSegment, 478

PolyBezierSegment, 478

PolyLineSegment, 478

PolyQuadraticBezierSegment, 478

QuadraticBezierSegment, 478

RectangleGeometry class, 477

representing as strings, 485-487

StreamGeometry class, 481

Geometry3D class, 576

GeometryCombineMode enumeration, 484

GeometryDrawing class, 474-475

GeometryGroup class, 482-484

GeometryModel3D

defined, 561

explained, 569

Geometry3D class, 576

Materials

AmbientMaterial, 573

combining, 576

DiffuseMaterial, 570-573

EmissiveMaterial, 574

explained, 569

SpecularMaterial, 575-576

MeshGeometry3D class, 576-577

Normals property, 579-581

Positions property, 577

TextureCoordinates property, 581

TriangleIndices property, 578-579

GestureOnly value (InkCanvasEditingMode), 318

GetCommandLineArgs method, 184

GetErrors method, 408

GetExceptionForHR method, 47

GetGeometry method, 477

GetHbitmap function, 704

GetInstalledVoices method, 662

GetIntermediateTouchPoints method, 159

GetObject value (NodeType property), 787

GetPosition method, 153-155, 157

GetTouchPoint method, 159

GetValueSource method, 70

GetVisualChild method, 495-496

GlyphRunDrawing class, 474

GradientOrigin property (RadialGradientBrush), 517

gradients

GradientStop objects, 513

LinearGradientBrush class, 513-516

RadialGradientBrush class, 517-518

transparent colors, 518

GradientSpreadMethod enumeration, 515

GradientStop objects, 513

GrammarBuilder class, 668-669

grammars

GrammarBuilder class, 668-669

Speech Recognition Grammar Specification (SRGS), 667-668

graphics device interface (GDI), 8

graphics hardware, 9

graphics. See 2D graphics; 3D graphics

Grid

cell properties, 111

compared to other panels, 119

explained, 108

interaction with child layout properties, 120

interactive sizing with GridSplitter, 115-116

mimicking Canvas with, 119

mimicking DockPanel with, 119

mimicking StackPanel with, 119

sharing row/column sizes, 117-119

ShowGridLines property, 112

sizing rows/columns, 112-115

absolute sizing, 113

autosizing, 113

GridLength structures, 114-115

percentage sizing, 114

proportional sizing, 113

start page with Grid, 108-112

GridLength structures, 114-115

GridLengthConverter, 114

GridSplitter class, 115-116

GridView control, 270-271

GridViewColumn object, 270

GroupBox class, 253

GroupDescriptions property (ICollectionView), 387

grouping, 387-390

GroupName property (RadioButton class), 247

GroupSizeDefinitions property (RibbonGroup), 286-288

GroupSizeReductionOrder property (RibbonTab), 285

H

Handled property (RoutedEventArgs class), 144

HandleRef, 680

hardware acceleration

explained, 10

GDIand, 11

HasContent property (ContentControl class), 242

HasItems property (ItemsControl class), 256

Header property (ToolBar), 306

HeaderedItemsControl class, 299

headers

containers with headers

Expander class, 253-254

GroupBox class, 253

headered items controls, 279, 299

Height property (FrameworkElements class), 78-80

Help command, 173-174

Hidden value (Visibility enumeration), 82

HierarchicalDataTemplate, 379, 398-399

hijacking dependency properties, 441

Hillberg, Mike, 383

hit testing

3D hit testing, 590-591

input hit testing

explained, 497

InputHitTest method, 511

visual hit testing

callback methods, 503

explained, 497

simple hit testing, 497-498

with multiple Visuals, 498-501

with overlapping Visuals, 501-503

HitTest method, 500-503

HitTestCore method, 503

HitTestFilterCallback delegate, 502

HitTestResultCallback delegates, 501

HorizontalAlignment property

Canvas, 99

DockPanel, 108

FrameworkElements, 83-84

Grid, 120

StackPanel, 101

WrapPanel, 104

HorizontalContentAlignment property (FrameworkElements class), 84-85

HostingWin32.cpp file, 681

HostingWPF.cpp file, 689-693

house drawing, 536-537

2D drawing, 536

3D drawing, 537-538

Transform3Ds, 553-554

HwndHost class, 681

HwndSource class, 688-691

HwndSource variable, 693-694

hyperlinks, 197-198

I

ICC (International Color Consortium), 513

ICollectionViewLiveShaping interface, 395

ICommand interface, 171

Icon property (MenuItem class), 299

IconResourceIndex property (JumpTask), 222

IconResourcePath property (JumpTask), 222

ICustomTypeDescriptor interface, 366

IDs, AppUserModelIDs, 772-773

IEasingFunction interface, 638

IList interface, 32

Image control, 309-311

ImageBrush class, 522-523

ImageDrawing class, 474-476

images. See 2D graphics; 3D graphics

ImageSource class, 310

ImageSourceConverter type converter, 309

ImeProcessedKey property (KeyEventArgs event), 150

immediate mode systems, 12, 473

implicit .NET namespaces, 23

implicit styles, creating, 421-422

implicit versus explicit runs, 314

InAir property (StylusDevice class), 157

Indeterminate ProgressState, 230

inertia, enabling, 165-170

Ingebretsen, Robby, 19

inheritance

class hierarchy, 55-57

property value inheritance, 67-69

styles, 418

InitializeComponent method, 42, 44, 180

InitialShowDelay property (ToolTip class), 250

InkAndGesture value (InkCanvasEditingMode), 318

InkCanvas control, 316-318

Inline elements

AnchoredBlock, 326-327

defined, 324-325

InlineUIContainer, 329

LineBreak, 327

Span, 325-326

Inlines property (TextBlock control), 314

InlineUIContainer class, 329

InnerConeAngle property (PointLights), 566

INotifyDataErrorInfo interface, 408-409

input gestures, 175

input hit testing

explained, 497

InputHitTest method, 511

InputGestureText property (MenuItem class), 300

InputHitTest method, 511

inspecting WPF elements, 12

instantiating objects

with factory methods, 47-48

with non-default constructors, 47

Int16 keyword, 50

Int32 keyword, 50

Int64 keyword, 50

integration of WPF, 9

IntelliSense, 53

intensity of lights, 563

interfaces. See specific interfaces

International Color Consortium (ICC), 513

interoperability (WPF)

ActiveX content, 710-714

C++/CLI, 677

DirectX, 13, 704-710

explained, 671-673

overlapping content, 673

Win32 controls

explained, 673-674

HwndSource class, 688-691

keyboard navigation, 683-687

launching modal dialogs, 688, 695

layout, 692-695

Webcam control, 674-683

Windows Forms controls

converting between two representatives, 703-704

ElementHost class, 700-702

explained, 695-696

launching modal dialogs, 699, 704

PropertyGrid, 696-699

InvalidItem value (JumpItemRejectionReason enumeration), 228

Inverted property (StylusDevice class), 157

IsAdditive property (animation classes), 619

IsAsync property (Binding object), 401

IsCheckable property (MenuItem class), 300

IsChecked property (ToggleButton class), 245

IsCumulative property (animation classes), 619

IsDefault property (Button class), 63-64, 244

IsDefaulted property (Button class), 244

IsDown property (KeyEventArgs event), 151

IsDropDownOpen property (Ribbon), 280

IsEditable property (ComboBox), 262

IsFrontBufferAvailableChanged event handler, 708

IsGrouping property (ItemsControl class), 256

IsHostedInRibbonWindow property (Ribbon), 281

IsIndeterminate property (ProgressBar control), 335

IsKeyboardFocused property (UIElements class), 152

IsKeyDown method, 152

IsMinimized property (Ribbon), 280

IsMouseDirectlyOver property (UIElements class), 153

IsNetworkDeployed method, 213

isolated storage, 191-192

IsolatedStorage namespace, 192

IsolatedStorageFile class, 192

IsolatedStorageFileStream class, 192

IsPressed property (ButtonBase class), 243

IsReadOnly property (ComboBox), 262

IsRepeat property (KeyEventArgs event), 151

IsSelected property (Selector class), 261

IsSelectionActive property (Selector class), 261

IsSynchronizedWithCurrentItem method, 372

IsSynchronizedWithCurrentItem property (Selector), 371

IsTextSearchCaseSensitive property (ItemsControl class), 265

IsTextSearchEnabled property (ItemsControl class), 265

IsThreeState property (ToggleButton class), 245

IsToggled property (KeyEventArgs event), 151

IsUp property (KeyEventArgs event), 151

ItemHeight property (WrapPanel), 102

items controls

ComboBox

ComboBoxItem objects, 266-267

customizing selection box, 262-265

events, 262

explained, 262

IsEditable property, 262

IsReadOnly property, 262

SelectionChanged event, 266

ContextMenu, 301-302

DataGrid

auto-generated columns, 274-275

CanUserAddRows property, 278

CanUserDeleteRows property, 278

clipboard interaction, 276

ClipboardCopyMode property, 276

column types, 273-274

displaying row details, 276-277

editing data, 277-278

EnableColumnVirtualization property, 276

EnableRowVirtualization property, 276

example, 272-273

freezing columns, 277

FrozenColumnCount property, 277

RowDetailsVisibilityMode property, 277

selecting rows/cells, 275

SelectionMode property, 275

SelectionUnit property, 275

virtualization, 276

GridView, 270-271

ItemsControl class, 255-256

AlternationCount property, 256

AlternationIndex property, 256

DisplayMemberPath property, 256-257

HasItems property, 256

IsGrouping property, 256

IsTextSearchCaseSensitive property, 265

IsTextSearchEnabled property, 265

Items property, 255

ItemsPanel property, 256-260

ItemsSource property, 256

ListBox

automation IDs, 269

example, 267-268

scrolling, 269

SelectionMode property, 268

sorting items in, 269

support for multiple selections, 268

ListView, 270-271

Menu, 298-301

Ribbon

application menu, 291-292

contextual tabs, 294-295

example, 278-281

galleries, 297-298

IsDropDownOpen property, 280

IsHostedInRibbonWindow property, 281

IsMinimized property, 280

key tips, 289-290

minimizing, 280

Quick Access toolbar, 292-294

resizing, 284-289

ribbon controls, 281-284, 288-289

RibbonGroup, 279, 286-288

RibbonTab, 279, 285-286

RibbonWindow, 280-281

ScreenTips, 295-296

WindowIconVisibility property, 281

scrolling behavior, controlling, 260-261

Selector class, 261

StatusBar, 307-308

TabControl, 271-272

ToolBar, 304-306

TreeView, 302-304

items panels, 258

Items property (ItemsControl class), 255, 371

ItemsCollection object, 269

ItemsControl class, 255-256

AlternationCount property, 256

AlternationIndex property, 256

DisplayMemberPath property, 256-257

HasItems property, 256

IsGrouping property, 256

IsTextSearchCaseSensitive property, 265

IsTextSearchEnabled property, 265

Items property, 255

ItemsPanel property, 256-260

ItemsSource property, 256

scrolling behavior, controlling, 260-261

ItemsPanel property (ItemsControl class), 256-260

ItemsSource collection, 277

ItemsSource property (ItemsControl class), 256, 371

ItemWidth property (WrapPanel), 102

IValueConverter interface, 380-382

IXamlLineInfo interface, 788

J

journal, 198-200

JournalOwnership property (Frame class), 198-199

Jump Lists

associating with applications, 218

explained, 218

JumpPaths

adding, 226-227

explained, 225

recent and frequent JumpPaths, 227-228

responding to rejected or removed items, 228

JumpTasks

customizing behavior of, 221-224

example, 218-219

explained, 218

and Visual Studio debugger, 220

JumpItemRejectionReason enumeration, 228

JumpItemsRejected event, 228

JumpItemsRemovedByUser event, 228

JumpList class. See Jump Lists

JumpPaths

adding, 226-227

explained, 225

recent and frequent JumpPaths, 227-228

responding to rejected or removed items, 228

JumpTasks

customizing behavior of, 221-224

example, 218-219

explained, 218

K

Kaxaml, 18-19

Key enumeration, 150-152

Key keyword, 50, 352

Key property (KeyEventArgs event), 150

key tips, 289-290

keyboard events, 150-152

keyboard navigation

customizing, 306

supporting in Win32 controls, 683-684

access keys, 687

tabbing in/out of Win32 content, 684-686

keyboard support for CheckBox control, 246

KeyboardDevice property (KeyEventArgs event), 151

KeyboardNavigation class, 306

KeyDown event, 150

KeyEventArgs event, 150-151

keyframe animation

discrete keyframes, 632-634

easing keyframes, 634

explained, 628

linear keyframes, 629-631

spline keyframes, 631-632

keyless resources, 422-423

KeyStates property

KeyEventArgs event, 151

QueryContinueDragEventArgs class, 155

KeyTip property (ribbon controls), 289-290

KeyUp event, 150

keywords. See specific keywords

L

Label class, 248

Label property (ribbon controls), 283

Language Integrated Query (LINQ), 396

LargeImageSource property (ribbon controls), 283

LastChildFill property (DockPanel), 105

launching modal dialogs

from Win32 applications, 695

from Windows Forms applications, 704

from WPF applications, 688, 699

layout

content overflow, handling

clipping, 122-124

explained, 122

scaling, 126-130

scrolling, 124-126

custom panels

communication between parents and children, 748-751

explained, 747-748

FanCanvas, 764-768

OverlapPanel, 759-764

SimpleCanvas, 751-756

SimpleStackPanel, 756-759

embedding WPF controls in Win32 applications, 692-695

explained, 77-78

panels, 77

Canvas, 98-100

DockPanel, 105-108

explained, 97-98

Grid. See Grid

SelectiveScrollingGrid, 121-122

StackPanel, 100-101

TabPanel, 120

ToolBarOverflowPanel, 121

ToolBarPanel, 121

ToolBarTray, 121

UniformGrid, 121

WrapPanel, 102-105

positioning elements

content alignment, 84-85

explained, 83

flow direction, 85-86

horizontal and vertical alignment, 83-84

stretch alignment, 84

sizing elements

explained, 78

explicit sizes, avoiding, 79

height and width, 78-80

margin and padding, 80-82

visibility, 82-83

transforms

applying, 86-88

combining, 94

explained, 86

MatrixTransform, 93

RotateTransform, 88-90

ScaleTransform, 90-92

SkewTransform, 92

support for, 94-95

TranslateTransform, 92-93

Visual Studio-like panes, creating

sequential states of user interface, 130-134

VisualStudioLikePanes.xaml, 134-136

VisualStudioLikePanes.xaml.cs, 136-140

LayoutTransform property

Canvas panel, 99

DockPanel, 108

FrameworkElements, 86

Grid, 120

StackPanel, 101

WrapPanel, 105

Left property (Canvas), 98

LengthConverter type converter, 82

Light and Fluffy skin example, 463-464

Light objects

AmbientLight, 562, 567-568

defined, 561

DirectionalLight, 562-563

explained, 540, 561

intensity of, 563

PointLight, 562-564

SpotLight, 562-566

Line class, 507-508

linear interpolation, 610-611

linear keyframes, 629-631

LinearAttenuation property (PointLights), 564

LinearGradientBrush class, 513-516

LineBreak class, 327

LineGeometry class, 477

LineJoin property (Pen class), 488

LineSegment class, 478

LINQ (Language Integrated Query), 396

List Blocks, 320

ListBox control

arranging items horizontally, 259

automation IDs, 269

example, 267-268

placing PlayingCards custom control into, 738

scrolling, 269

SelectionMode property, 268

sorting items in, 269

support for multiple selections, 268

lists, 32-33

Jump Lists

and Visual Studio debugger, 220

associating with applications, 218

explained, 218

JumpPaths, 225-228

JumpTasks, 218-224

List Blocks, 320

ListBox

arranging items horizontally, 259

automation IDs, 269

example, 267-268

placing PlayingCards custom control into, 738

scrolling, 269

SelectionMode property, 268

sorting items in, 269

support for multiple selections, 268

ListView, 270-271

ListView control, 270-271

live objects, writing to, 791-793

live shaping, 385, 395

Load method, 36-37, 794

LoadAsync method (XamlReader), 37

LoadComponent method, 43

loading XAML at runtime, 36-37

Lobo, Lester, 19

local values, clearing, 71

localization IDs, marking user interfaces with, 349

localizing binary resources, 348-349

LocBaml, creating satellite assembly with, 349

locking D3DImage, 709

logical AND relationships, 429-430

logical OR relationships, 429

logical resources

accessing directly, 358

consolidating color brushes with, 351-353

defining and applying in procedural code, 357-358

explained, 349-350

interaction with system resources, 358-359

resource lookup, 353

resources without sharing, 356

static versus dynamic resources, 353-355

logical trees, 57-62

LogicalChildren property, 62

LogicalTreeHelper class, 59

LookDirection property (Cameras), 542-546

lookup (resource), 353

loose XAML pages, 213-214

M

mage.exe command-line tool, 192

mageUI.exe graphical tool, 192

Main method, 181-183

MainWindow class, 179-180

MainWindow.xaml file, 706

MainWindow.xaml.cs file, 160-161, 168-169, 706-708

malicious skins, preventing, 464-465

managed code, mixing with unmanaged code, 678

manipulation events

adding inertia with, 165-170

enabling panning/rotating/zooming with, 164-165

explained, 162-163

ManipulationCompleted, 163

ManipulationDelta, 163

ManipulationStarted, 163

ManipulationStarting, 163

ManipulationBoundaryFeedback event, 167

ManipulationCompleted event, 163

ManipulationDelta event, 163-165

ManipulationDeltaEventArgs instance, 163

ManipulationInertiaStarting event, 165, 169

ManipulationStarted event, 163

ManipulationStarting event, 163

Margin property

Canvas panel, 99

DockPanel, 108

FrameworkElements, 80-82

Grid, 120

StackPanel, 101

WrapPanel, 104

markup compatibility, 791

markup extensions

explained, 28-31

parameters, 29

in procedural code, 31

Materials

AmbientMaterial, 573

combining, 576

DiffuseMaterial, 570-573

EmissiveMaterial, 574

explained, 569

SpecularMaterial, 575-576

MatrixCamera class, 551

MatrixTransform, 93

MatrixTransform3D class, 560

MDI (multiple-document interface), 185

MeasureOverride method, 748-750

MediaCommands class, 172

MediaElement class

playing audio, 654-656

playing video, 656-658

MediaPlayer class, 653-654

MediaTimeline class

playing audio, 654-656

playing video, 659-660

Members keyword, 49-50

Menu control, 298-301

MenuItem class, 299

menus

ContextMenu control, 301-302

Menu control, 298-301

MergedDictionaries property (ResourceDictionary class), 355

MeshGeometry3D class, 576-577

Normals property, 579-581

Positions property, 577

TextureCoordinates property, 581

TriangleIndices property, 578-579

methods. See specific methods

minimizing Ribbon, 280

missing styles, troubleshooting, 461

mnemonics, 687

modal dialogs

launching from Win32 applications, 695

launching from Windows Forms applications, 704

launching from WPF applications, 688, 699

Model3DGroup, defined, 561

Model3DGroup class, 582-584

Model3Ds

explained, 561

GeometryModel3D

defined, 561

explained, 569

Geometry3D class, 576

Materials, 569-576

MeshGeometry3D class, 576-581

Lights

AmbientLight, 562, 567-568

DirectionalLight, 562-563

explained, 561

intensity of, 563

PointLight, 562-564

SpotLight, 562-566

Model3DGroup, 561, 582-584

modeless dialogs, 178

ModelUIElement3D class, 586-588

ModelVisual3D class, 585-586

Modifiers property (KeyboardDevice), 151

Mouse class, 155

mouse events

capturing, 155-156

drag-and-drop events, 154-155

explained, 152-153

MouseButtonEventArgs, 154

MouseEventArgs, 153-154

MouseWheelEventArgs, 154

transparent and null regions, 153

MouseButtonEventArgs class, 154

MouseButtonState enumeration, 153

MouseEventArgs class, 153-154

MouseOverBackground property (ribbon controls), 283

MouseOverBorderBrush property (ribbon controls), 283

MouseWheelEventArgs class, 154

MultiBinding class, 410-411

multiple providers, support for

applying animations, 71

coercion, 71

determining base values, 69-70

evaluating, 71

explained, 69

validation, 72

multiple visuals, hit testing with, 498-501

multiple-document interface (MDI), 185

MultipleRange value (SelectionMode), 337

MultiPoint Mouse SDK, 158

multithreaded applications, 187

MyHwndHost class, 680-682

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset