(backslash), 30
{ } (curly braces), 29-30, 375
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
explained, 511
LinearGradientBrush class, 513-516
RadialGradientBrush class, 517-518
SolidColorBrush class, 512
drawings
Drawing class, 474
DrawingBrush class, 475
DrawingContext methods, 492
DrawingVisual class, 475
GeometryDrawing class, 474-475
GlyphRunDrawing class, 474
VideoDrawing class, 474
geometries
aggregate geometries, 481
Bézier curves, 478
CombinedGeometry class, 484-485
defined, 477
EllipseGeometry class, 477
LineGeometry class, 477
RectangleGeometry class, 477
representing as strings, 485-487
StreamGeometry class, 481
house example, 536
Shapes
clip art based on Shapes, 510-511
Ellipse class, 506
how they work, 507
overuse of, 505
Polygon class, 509
Polyline class, 508
transforms. See transforms
Visuals
custom rendering, 497
DrawingContext methods, 492
explained, 491
WPF 3.5 enhancements, 13
2D and 3D coordinate system transformation
explained, 594
Visual.TransformToAncestor method, 594-598
Visual3D.TransformToAncestor method, 598-603
Visual3D.TransformToDescendant method, 598-603
Cameras
blind spots, 543
explained, 540
LookDirection property, 542-546
MatrixCamera, 551
OrthographicCamera versus PerspectiveCamera, 549-551
Transform property, 547
Z-fighting, 543
hardware acceleration
explained, 10
GDI and, 11
Lights, 540
Materials
AmbientMaterial, 573
combining, 576
EmissiveMaterial, 574
explained, 569
Model3Ds
explained, 561
GeometryModel3D, 569
pixel boundaries, 15
resolution independence, 10
texture coordinates, 582
Transform3Ds
combining, 560
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
Visual3Ds
explained, 584
WPF 3.5 enhancements, 13
About dialog
with font properties moved to inner StackPanel, 72-73
with font properties set on root window, 68
absolute sizing, 113
accessing
binary resources
embedded in another assembly, 346
logical resources, 358
Action property (QueryContinueDragEventArgs class), 155
ActiveEditingMode property (InkCanvas control), 317
ActualHeight property (FrameworkElements class), 80
ActualWidth property (FrameworkElements class), 80
AddBackEntry method, 200
AddToSchedule method, 779
advantages of WPF, 11
aggregate geometries, 481
AllowPartiallyTrustedCallers attribute, 210
AlternationCount property (ItemsControl class), 256
AlternationIndex property (ItemsControl class), 256
AmbientMaterial class, 573
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
By property, 614
Duration property, 612
EasingFunction property, 618
FillBehavior property, 619
IsAdditive property, 619
IsCumulative property, 619
RepeatBehavior property, 616-617
SpeedRatio property, 615
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
explained, 605
frame-based animation, 607
keyframe animation
easing keyframes, 634
explained, 628
path-based animations, 635
reusing animations, 611
timer-based animation, 606-607
and Visual State Manager
button ControlTemplate with VisualStates, 641-644
with XAMLEventTriggers/Storyboards
starting animations from property triggers, 626-627
Storyboards as Timelines, 627-628
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
Properties collection, 185
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
embedding Windows Forms controls
embedding WPF controls in
Windows Forms applications, 700-704
gadget-style applications, 205-206
multiple-document interface (MDI), 185
navigation-based desktop applications
navigation containers, 194-196
returning data from pages, 203-204
sending data to pages, 202-203
standard desktop applications
application state, 192
multithreaded applications, 187
retrieving command-line arguments in, 184
single-instance applications, 186
Windows Installer, 192
XAML Browser applications
ClickOnce caching, 208
deployment, 211
full-trust XAML Browser applications, 210
integrated navigation, 210-211
security, 211
XAML Browser Applications (XBAPs), 207
Apply method, 229
arbitrary objects, content and, 243
ArcSegment class, 478
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 properties
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
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
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
AxisAngleRotation3D class, 557-558
AxMsTscAxNotSafeForScripting control, 712-713
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
code-behind file, 730
initial implementation, 729-733
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
resources at site of origin, 346-347
resources embedded in another assembly, 346
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 UIElement, 368
ElementName property, 364
INotifyDataErrorInfo interface, 408-409
IsAsync property, 401
RelativeSource property, 365
removing, 363
sharing source with DataContext, 372-373
StringFormat property, 374
TargetNullValue property, 364
UpdateSourceExceptionFilter property, 408
UpdateSourceTrigger property, 404
ValidationRules property, 406
binding. See data binding
Binding.DoNothing values, 384
BindingMode enumeration, 403
BitmapCacheBrush class, 533
BitmapEffect, 528
bitmaps
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
BlockUIContainer, 321
List, 320
Paragraph, 320
Section, 320
Table, 320
BlockUIContainer Blocks, 321
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
LinearGradientBrush class, 513-516
RadialGradientBrush class, 517-522
SolidColorBrush class, 512
bubbling, 143
BuildWindowCore class, 680
ButtonAutomationPeer class, 245
buttons
button ControlTemplate with VisualStates, 641-644
ButtonAutomationPeer class, 245
CheckBox class, 246
defined, 243
RepeatButton class, 245
styling with built-in animations, 624-626
By property (animation classes), 614
Byte keyword, 49
cached composition
BitmapCacheBrush class, 533
Viewport2DVisual3D support for, 589
caching (ClickOnce), 208
calendar controls
Cameras
blind spots, 543
explained, 540
LookDirection property, 542-546
MatrixCamera, 551
OrthographicCamera versus PerspectiveCamera, 549-551
Transform property, 547
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
SkewTransform class, 92
CenterY property
SkewTransform class, 92
change notification (dependency properties), 65-67
Char keyword, 50
CheckBox class, 246
child object elements
processing rules, 36
values type-converted to object elements, 34
/clr compiler option, 682
CircleEase function, 638
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
clickable cube example, 586-588
ClickCount property (MouseButtonEventArgs), 154
ClickMode property (ButtonBase class), 243
ClickOnce caching, 208
with unmanaged code, 193
clients, pure-XAML Twitter client, 412-414
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
ClipToBounds property (panels), 123
clr-namespace directive, 35
Code keyword, 50
CoerceValueCallback delegate, 71
cold start time, 187
Collapsed value (Visibility enumeration), 82
collections
customizing collection views
explained, 385
filtering, 391
ItemsSource, 277
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
freezing, 277
Grid
sharing row/column sizes, 117-119
CombinedGeometry class, 484-485
combining
Materials, 576
Transform3Ds, 560
transforms, 94
ComboBox control
customizing selection box, 262-265
events, 262
explained, 262
IsEditable property, 262
IsReadOnly property, 262
SelectionChanged event, 266
command-line arguments, retrieving, 184
commands. See also specific commands
controls with built-in command bindings, 175-176
executing with input gestures, 175
implementing with custom controls, 741
commas in geometry strings, 487
Common Language Infrastructure (CLI), 677
Compiled Application Markup Language, 42
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
GroupBox class, 253
Label class, 248
navigation containers, 194-196
ContainerUIElement3D class, 588
Content build action, 342
content controls
and arbitrary objects, 243
buttons
CheckBox class, 246
defined, 243
RepeatButton class, 245
containers
GroupBox class, 253
Label class, 248
ContentControl class, 242
defined, 242
content overflow, handling
explained, 122
Frame class, 252
ContentControl class, 242, 435-437
ContentElement class, 56
ContextMenuService class, 302
ContextualTabGroupHeader property (RibbonTab), 294
Control class, 57
control templates
named elements, 434
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
visual states
respecting with triggers, 442-446
respecting with VSM (Visual State Manager), 447-455
controls
built-in command bindings, 175-176
buttons
CheckBox class, 246
defined, 243
RepeatButton class, 245
ComboBox
customizing selection box, 262-265
events, 262
explained, 262
IsEditable property, 262
IsReadOnly property, 262
SelectionChanged event, 266
containers
GroupBox class, 253
Label class, 248
custom controls, creating, 10
code-behind file, 730
commands, 741
user controls versus custom controls, 718
DataGrid
auto-generated columns, 274-275
CanUserAddRows property, 278
CanUserDeleteRows property, 278
clipboard interaction, 276
ClipboardCopyMode property, 276
displaying row details, 276-277
EnableColumnVirtualization property, 276
EnableRowVirtualization property, 276
freezing columns, 277
FrozenColumnCount property, 277
RowDetailsVisibilityMode property, 277
selecting rows/cells, 275
SelectionMode property, 275
SelectionUnit property, 275
virtualization, 276
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
ItemsSource property, 256
scrolling behavior, controlling, 260-261
ListBox
automation IDs, 269
scrolling, 269
SelectionMode property, 268
sorting items in, 269
support for multiple selections, 268
PasswordBox, 316
ProgressBar, 335
Ribbon
IsDropDownOpen property, 280
IsHostedInRibbonWindow property, 281
IsMinimized property, 280
minimizing, 280
ribbon controls, 281-284, 288-289
WindowIconVisibility property, 281
RichTextBox, 316
Selector class, 261
TextBlock
explained, 313
explicit versus implicit runs, 314
properties, 313
support for multiple lines of text, 315
whitespace, 314
TextBox, 315
user controls, creating
dependency properties, 724-727
protecting controls from accidental usage, 723-724
user controls versus custom controls, 718
ControlTemplate class
ControlTemplate with triggers, 432-434
named elements, 434
simple ControlTemplate, 431-432
templated parent properties, respecting, 435-437
Convert method, 381
converting spoken words into text, 665-667
ConvertXmlStringToObjectGraph method, 795
CountToBackgroundConverter class, 380-383
CreateBitmapSourceFromHBitmap method, 704
CreateHighlightCommand, 331
CreateInkStickyNoteCommand, 331
CreateTextStickyNoteCommand, 331
CreateToastNotifier method, 775
CreateWindow method, 681
Cube example
cube of buttons and small purple cube, 595-597
culture, preparing projects for multiple cultures, 348
CurrentItem property (ICollectionView), 391
curves, Bézier, 478
CustomCategory property (JumpTask), 223-224
customizing
advantages/disadvantages, 416
collection views
explained, 385
filtering, 391
color space profiles, 513
controls, creating, 10
commands, 741
user controls versus custom controls, 718
keyboard navigation, 306
panels
communication between parents and children, 748-751
rendering, 497
selection boxes (ComboBox control), 262-265
sorting, 387
taskbar
explained, 230
taskbar item progress bars, 230
taskbar overlays, 231
thumbnail content, 231
DashStyle property (Pen class), 488
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
RelativeSource property, 365
removing, 363
sharing source with DataContext, 372-373
StringFormat property, 374
TargetNullValue property, 364
UpdateSourceExceptionFilter property, 408
UpdateSourceTrigger property, 404
ValidationRules property, 406
canceling temporarily, 384
collection views, customizing
explained, 385
filtering, 391
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
PriorityBinding class, 411-412
pure-XAML Twitter client, 412-414
rendering, controlling
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
HierarchicalDataTemplate, 398-399
template selectors, 380
data types
bridging incompatible data types, 380-383
DateTime, 780
DateTimeOffset, 780
in XAML2009, 46
CanUserAddRows property, 278
CanUserDeleteRows property, 278
clipboard interaction, 276
ClipboardCopyMode property, 276
displaying row details, 276-277
EnableColumnVirtualization property, 276
EnableRowVirtualization property, 276
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
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
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
as extensibility mechanism, 75
attached property providers, 74-75
defined, 72
attached property providers, 74-75
hijacking, 441
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
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
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
direct routing, 143
Direct3D, 10
Direction property
DirectionalLight, 562
PointLights, 566
directives. See specific directives
DirectX
development of, 8
WPF interoperability, 13, 704-710
Dismissed event, 779
DispatcherObject class, 56
DispatcherPriority enumeration, 187
DispatcherTimer class, 606-607
DisplayDateEnd property (Calendar control), 337
DisplayDateStart property (Calendar control), 337
displaying
DisplayMemberPath property, 256-257, 369
Dock property (DockPanel), 105
DockPanel
explained, 105
interaction with child layout properties, 107-108
mimicking with Grid, 119
properties, 105
documents, flow documents
defined, 318
DoNothing value (Binding), 384
Double keyword, 50
DoubleAnimation class, 609-610
download groups, 212
DownloadFileGroupAsync method, 213
Drawing class, 474
DrawingBrush class, 475, 518-522
DrawingContext class
methods, 492
drawings
Drawing class, 474
DrawingBrush class, 475
DrawingContext methods, 492
DrawingVisual class, 475
geometries. See geometries
GeometryDrawing class, 474-475
GlyphRunDrawing class, 474
VideoDrawing class, 474
DrawingVisual class, 475
explained, 491
DropDownOpened event, 262
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
Ease method, 638
easing functions, 14
easing keyframes, 634
EasingFunction property (animation classes), 618
EasingFunctionBase class, 639
EasingMode property (easing functions), 635
editing
EditingCommands class, 172
EditingMode property (InkCanvas control), 317
EditingModeInverted property (InkCanvas control), 317
ElasticEase function, 638
element trees. See trees
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
Windows Forms controls in WPF applications
WPF controls in Win32 applications
WPF controls in Windows Forms applications
converting between two representatives, 703-704
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
MouseButtonState, 153
PixelFormats, 311
RoutingStrategy, 143
ShutdownMode, 184
Stretch, 127
StretchDirection, 127
TileMode, 521
UpdateSourceTrigger, 404
EraseByPoint value (InkCanvasEditingMode), 318
EraseByStroke value (InkCanvasEditingMode), 318
Error ProgressState, 230
ErrorsChanged event, 408
EscapePressed property (QueryContinueDragEventArgs class), 155
Euler angles, 558
EvenOdd fill (FillRule property), 480
events
attributes, 21
DateValidationError, 340
DropDownOpened, 262
event handlers, 49
event wrappers, 142
JumpItemsRejected, 228
JumpItemsRemovedByUser, 228
mouse events
MouseButtonEventArgs, 154
MouseWheelEventArgs, 154
transparent and null regions, 153
order of processing, 22
rendering, 607
routed events
adding to user controls, 727-728
consolidating routed event handlers, 149-150
defined, 141
RoutedEventArgs class, 144
stopping, 147
SelectedDatesChanged, 340
toast notification events, 778-779
touch events
explained, 158
triggers, 67
WPF 4.5 enhancements, 15
wrappers, 142
evolution of WPF. See releases of WPF
ExceptionValidationRule object, 407
Execute method, 171
executing commands with input gestures, 175
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
Failed event, 779
FieldModifier keyword, 50
FileInputBox control
dependency properties, 724-727
protecting from accidental usage, 723-724
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
Blocks
BlockUIContainer, 321
List, 320
Paragraph, 320
Section, 320
Table, 320
defined, 318
Inlines
InlineUIContainer, 329
LineBreak, 327
FlowDirection property (FrameworkElements class), 85-86
FlowDocument element, 318
FlowDocumentPageViewer control, 329
FlowDocumentReader control, 329
FlowDocumentScrollViewer control, 329
FontSizeConverter type converter, 28
FormatConvertedBitmap class, 310
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
HorizontalAlignment property, 83-84
HorizontalContentAlignment property, 84-86
LayoutTransform property, 86
RenderSize property, 79
RenderTransform property, 86
VerticalAlignment property, 83-85
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
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
aggregate geometries, 481
Bézier curves, 478
CombinedGeometry class, 484-485
defined, 477
EllipseGeometry class, 477
Geometry3D class, 576
LineGeometry class, 477
Positions property, 577
TextureCoordinates property, 581
TriangleIndices property, 578-579
PathGeometry class
ArcSegment, 478
BezierSegment, 478
explained, 477
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
GeometryModel3D
defined, 561
explained, 569
Geometry3D class, 576
Materials
AmbientMaterial, 573
combining, 576
EmissiveMaterial, 574
explained, 569
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
grammars
Speech Recognition Grammar Specification (SRGS), 667-668
graphics device interface (GDI), 8
graphics hardware, 9
graphics. See 2D graphics; 3D graphics
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
absolute sizing, 113
autosizing, 113
GridLength structures, 114-115
percentage sizing, 114
proportional sizing, 113
GridLength structures, 114-115
GridLengthConverter, 114
GridViewColumn object, 270
GroupBox class, 253
GroupDescriptions property (ICollectionView), 387
GroupName property (RadioButton class), 247
GroupSizeDefinitions property (RibbonGroup), 286-288
GroupSizeReductionOrder property (RibbonTab), 285
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
GroupBox class, 253
headered items controls, 279, 299
Height property (FrameworkElements class), 78-80
Hidden value (Visibility enumeration), 82
HierarchicalDataTemplate, 379, 398-399
hijacking dependency properties, 441
Hillberg, Mike, 383
hit testing
input hit testing
explained, 497
InputHitTest method, 511
visual hit testing
callback methods, 503
explained, 497
with multiple Visuals, 498-501
with overlapping Visuals, 501-503
HitTestCore method, 503
HitTestFilterCallback delegate, 502
HitTestResultCallback delegates, 501
HorizontalAlignment property
Canvas, 99
DockPanel, 108
Grid, 120
StackPanel, 101
WrapPanel, 104
HorizontalContentAlignment property (FrameworkElements class), 84-85
HostingWin32.cpp file, 681
2D drawing, 536
HwndHost class, 681
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
IEasingFunction interface, 638
IList interface, 32
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
Ingebretsen, Robby, 19
inheritance
property value inheritance, 67-69
styles, 418
InitializeComponent method, 42, 44, 180
InitialShowDelay property (ToolTip class), 250
InkAndGesture value (InkCanvasEditingMode), 318
Inline elements
InlineUIContainer, 329
LineBreak, 327
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 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)
C++/CLI, 677
overlapping content, 673
Win32 controls
launching modal dialogs, 688, 695
Windows Forms controls
converting between two representatives, 703-704
launching modal dialogs, 699, 704
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
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
customizing selection box, 262-265
events, 262
explained, 262
IsEditable property, 262
IsReadOnly property, 262
SelectionChanged event, 266
DataGrid
auto-generated columns, 274-275
CanUserAddRows property, 278
CanUserDeleteRows property, 278
clipboard interaction, 276
ClipboardCopyMode property, 276
displaying row details, 276-277
EnableColumnVirtualization property, 276
EnableRowVirtualization property, 276
freezing columns, 277
FrozenColumnCount property, 277
RowDetailsVisibilityMode property, 277
selecting rows/cells, 275
SelectionMode property, 275
SelectionUnit property, 275
virtualization, 276
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
ItemsSource property, 256
ListBox
automation IDs, 269
scrolling, 269
SelectionMode property, 268
sorting items in, 269
support for multiple selections, 268
Ribbon
IsDropDownOpen property, 280
IsHostedInRibbonWindow property, 281
IsMinimized property, 280
minimizing, 280
ribbon controls, 281-284, 288-289
WindowIconVisibility property, 281
scrolling behavior, controlling, 260-261
Selector class, 261
items panels, 258
Items property (ItemsControl class), 255, 371
ItemsCollection object, 269
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
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
JournalOwnership property (Frame class), 198-199
associating with applications, 218
explained, 218
JumpPaths
explained, 225
recent and frequent JumpPaths, 227-228
responding to rejected or removed items, 228
JumpTasks
customizing behavior of, 221-224
explained, 218
and Visual Studio debugger, 220
JumpItemRejectionReason enumeration, 228
JumpItemsRejected event, 228
JumpItemsRemovedByUser event, 228
JumpList class. See Jump Lists
JumpPaths
explained, 225
recent and frequent JumpPaths, 227-228
responding to rejected or removed items, 228
JumpTasks
customizing behavior of, 221-224
explained, 218
Key property (KeyEventArgs event), 150
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
keyframe animation
easing keyframes, 634
explained, 628
KeyStates property
KeyEventArgs event, 151
QueryContinueDragEventArgs class, 155
KeyTip property (ribbon controls), 289-290
KeyUp event, 150
keywords. See specific keywords
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
explained, 122
custom panels
communication between parents and children, 748-751
embedding WPF controls in Win32 applications, 692-695
panels, 77
Grid. See Grid
SelectiveScrollingGrid, 121-122
TabPanel, 120
ToolBarOverflowPanel, 121
ToolBarPanel, 121
ToolBarTray, 121
UniformGrid, 121
positioning elements
explained, 83
horizontal and vertical alignment, 83-84
stretch alignment, 84
sizing elements
explained, 78
explicit sizes, avoiding, 79
transforms
combining, 94
explained, 86
MatrixTransform, 93
SkewTransform, 92
Visual Studio-like panes, creating
sequential states of user interface, 130-134
VisualStudioLikePanes.xaml, 134-136
VisualStudioLikePanes.xaml.cs, 136-140
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
defined, 561
intensity of, 563
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
placing PlayingCards custom control into, 738
scrolling, 269
SelectionMode property, 268
sorting items in, 269
support for multiple selections, 268
Jump Lists
and Visual Studio debugger, 220
associating with applications, 218
explained, 218
List Blocks, 320
ListBox
arranging items horizontally, 259
automation IDs, 269
placing PlayingCards custom control into, 738
scrolling, 269
SelectionMode property, 268
sorting items in, 269
support for multiple selections, 268
live objects, writing to, 791-793
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
interaction with system resources, 358-359
resource lookup, 353
resources without sharing, 356
static versus dynamic resources, 353-355
LogicalChildren property, 62
LogicalTreeHelper class, 59
LookDirection property (Cameras), 542-546
lookup (resource), 353
mage.exe command-line tool, 192
mageUI.exe graphical tool, 192
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
enabling panning/rotating/zooming with, 164-165
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
Grid, 120
StackPanel, 101
WrapPanel, 104
markup compatibility, 791
markup extensions
parameters, 29
in procedural code, 31
Materials
AmbientMaterial, 573
combining, 576
EmissiveMaterial, 574
explained, 569
MatrixCamera class, 551
MatrixTransform, 93
MatrixTransform3D class, 560
MDI (multiple-document interface), 185
MeasureOverride method, 748-750
MediaCommands class, 172
MediaElement class
MediaTimeline class
MenuItem class, 299
menus
MergedDictionaries property (ResourceDictionary class), 355
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
Model3Ds
explained, 561
GeometryModel3D
defined, 561
explained, 569
Geometry3D class, 576
Lights
explained, 561
intensity of, 563
modeless dialogs, 178
ModelUIElement3D class, 586-588
Modifiers property (KeyboardDevice), 151
Mouse class, 155
mouse events
MouseButtonEventArgs, 154
MouseWheelEventArgs, 154
transparent and null regions, 153
MouseButtonEventArgs class, 154
MouseButtonState enumeration, 153
MouseOverBackground property (ribbon controls), 283
MouseOverBorderBrush property (ribbon controls), 283
MouseWheelEventArgs class, 154
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