Siêu thị PDFTải ngay đi em, trời tối mất

Thư viện tri thức trực tuyến

Kho tài liệu với 50,000+ tài liệu học thuật

© 2023 Siêu thị PDF - Kho tài liệu học thuật hàng đầu Việt Nam

wpf in action with visual studio 2008
PREMIUM
Số trang
517
Kích thước
12.5 MB
Định dạng
PDF
Lượt xem
1398

wpf in action with visual studio 2008

Nội dung xem thử

Mô tả chi tiết

www.it-ebooks.info

WPF in Action

with Visual Studio 2008

www.it-ebooks.info

www.it-ebooks.info

WPF in Action

with Visual Studio 2008

COVERS VISUAL STUDIO 2008 SP1 AND .NET 3.5 SP1

ARLEN FELDMAN

MAXX DAYMON

MANNING

Greenwich

(74° w. long.)

www.it-ebooks.info

For online information and ordering of this and other Manning books, please visit

www.manning.com. The publisher offers discounts on this book when ordered in quantity.

For more information, please contact:

Special Sales Department

Manning Publications Co.

Sound View Court 3B Fax: (609) 877-8256

Greenwich, CT 06830 Email: [email protected]

©2009 by Manning Publications Co. All rights reserved.

No part of this publication may be reproduced, stored in a retrieval system, or transmitted, in

any form or by means electronic, mechanical, photocopying, or otherwise, without prior written

permission of the publisher.

Many of the designations used by manufacturers and sellers to distinguish their products are

claimed as trademarks. Where those designations appear in the book, and Manning

Publications was aware of a trademark claim, the designations have been printed in initial caps

or all caps.

Recognizing the importance of preserving what has been written, it is Manning’s policy to have

the books we publish printed on acid-free paper, and we exert our best efforts to that end.

Recognizing also our responsibility to conserve the resources of our planet, Manning books are

printed on paper that is at least 15% recycled and processed elemental chlorine-free

Development Editor: Jeff Bleiel

Manning Publications Co. Copyeditor: Andrea Kaucher

Sound View Court 3B Typesetter: Dennis Dalinnik

Greenwich, CT 06830 Cover designer: Leslie Haimes

ISBN 1-933988-22-3

Printed in the United States of America

1 2 3 4 5 6 7 8 9 10 – MAL – 12 11 10 09 08

www.it-ebooks.info

v

brief contents

PART 1 PAST, PRESENT, AND FUTURE .........................................1

1 ■ The road to Avalon (WPF) 3

2 ■ Getting started with WPF and Visual Studio 2008 22

3 ■ WPF from 723 feet 41

PART 2 THE BASICS .................................................................63

4 ■ Working with layouts 65

5 ■ The Grid panel 94

6 ■ Resources, styles, control templates, and themes 119

7 ■ Events 147

8 ■ Oooh, shiny! 157

PART 3 APPLICATION DEVELOPMENT .....................................177

9 ■ Laying out a more complex application 179

10 ■ Commands 191

11 ■ Data binding with WPF 209

12 ■ Advanced data templates and binding 253

www.it-ebooks.info

vi BRIEF CONTENTS

13 ■ Custom controls 299

14 ■ Drawing 315

15 ■ Drawing in 3D 352

PART 4 THE LAST MILE...................................................................... 371

16 ■ Building a navigation application 373

17 ■ WPF and browsers: XBAP, ClickOnce,

and Silverlight 390

18 ■ Printing, documents, and XPS 406

19 ■ Transition effects 427

20 ■ Interoperability 457

21 ■ Threading 474

www.it-ebooks.info

vii

contents

preface xvii

acknowledgments xix

about this book xxi

about the cover illustration xxv

PART 1 PAST, PRESENT, AND FUTURE ...............................1

1 The road to Avalon (WPF) 3

1.1 The past and the present 4

Why Windows drawing is the way it is 5 ■ How we currently create

Windows UIs 7 ■ Why the web is the way it is 9 ■ How UI is

created on the web 10

1.2 Why Avalon/WPF 11

Taking advantage of modern hardware 12 ■ Using modern

software design 13 ■ Separating presentation logic from

presentation 14 ■ Making it simpler to code GUIs 15

1.3 Creating UI using WPF 16

Defining WPF UI with XAML 16 ■ Defining WPF UI through

code 17 ■ Defining WPF UI with tools 18 ■ Who does the

drawing 19 ■ Pixels versus vectors 19

1.4 Summary 20

www.it-ebooks.info

viii CONTENTS

2 Getting started with WPF and Visual Studio 2008 22

2.1 Your grandpa’s Hello, World! 23

Adding a button and button-handler to the window 25

Running Hello, World! 27 ■ The TextBlock control 27

2.2 The application definition 30

Defining application startup in XAML 30

Why define the application in XAML? 31

2.3 A tour of WPF in Visual Studio 2008 34

The XAML designer 35 ■ The Properties grid 38

Selection controls in Visual Studio 39 ■ The Document

Outline 39

2.4 Summary 40

3 WPF from 723 feet 41

3.1 Where does WPF fit in Windows? 42

Red bits and green bits 42 ■ Silverlight 43

3.2 Framework services 44

Base services 44 ■ Media services 51 ■ User interface

services 55 ■ Document services 56

3.3 Necessary and useful tools 58

Microsoft Expression family 59 ■ Visual Studio 60

Other tools 60

3.4 Summary 61

PART 2 THE BASICS .......................................................63

4 Working with layouts 65

4.1 The idea behind layout panels 66

4.2 The Canvas layout 68

Converting a Grid layout to a Canvas layout by modifying

the XAML 69 ■ Adding a Canvas to an existing layout 69

Using attached properties 72 ■ Setting up a Canvas

programmatically 73

4.3 The StackPanel layout 76

Adding scrolling support 80 ■ The Expander control 81

www.it-ebooks.info

CONTENTS ix

4.4 The DockPanel layout 83

Defining a DockPanel in XAML 84 ■ Setting up a DockPanel

programmatically 85

4.5 The WrapPanel layout 86

4.6 Other layout options 88

Specialized layout panels 89 ■ The FlowDocument 89

4.7 Summary 93

5 The Grid panel 94

5.1 Getting started with the Grid layout panel 95

Modifying the Grid 96 ■ Grid specific properties 100

5.2 Using the Grid layout to build a calculator UI 101

Planning the calculator 101 ■ Laying out the calculator 102

Tweaking appearance 104

5.3 The Grid and localization 107

5.4 UniformGrid 109

5.5 Making the calculator work 110

Handling operations 110 ■ Genericizing the handlers 114

5.6 Summary 117

6 Resources, styles, control templates, and themes 119

6.1 Resources 120

Using standalone resource dictionaries 122 ■ Using resources

from code 124 ■ Dynamic resources 125

6.2 Styles 131

Styles based on other styles 133 ■ Implicitly applying styles 135

6.3 Control templates 136

Creating a control template 137 ■ ContentPresenters 137

Template binding 138 ■ Triggers 139

6.4 Themes 140

Using a specific theme 142 ■ Changing themes from code 145

6.5 Summary 146

7 Events 147

7.1 Routed events 148

Bubbling events 149 ■ Tunneling events 151

www.it-ebooks.info

x CONTENTS

7.2 Events from code 154

handledEventsToo 155 ■ Class events 156

7.3 Summary 156

8 Oooh, shiny! 157

8.1 Glass buttons 158

Styling the text 162 ■ Adding glow when over buttons 162

Handling the button click 164

8.2 Adding some simple animation 165

Animating button glow 165 ■ Animating a color 168

8.3 Reflections 169

8.4 Transforms 173

8.5 Summary 174

PART 3 APPLICATION DEVELOPMENT ...........................177

9 Laying out a more complex application 179

9.1 Creating the Desktop Wiki Project 181

9.2 Nesting layouts 182

Preparing the layout for menus and toolbars 183

Adding menubars, statusbars, and toolbars… 184

9.3 Nested layouts 186

Adding the first Grid 187 ■ Adding the second Grid 188

Using a StackPanel and Expander as navigation aids 189

9.4 Summary 190

10 Commands 191

10.1 A brief history of commands 192

Windows Forms and simple event handlers 192

Son of MFC 193

10.2 The WPF approach 194

The Command pattern 194 ■ WPF commands 195

10.3 Using the built-in system commands 196

ApplicationCommands 197 ■ NavigationCommands 198

EditingCommands 198 ■ Component and media

commands 200

www.it-ebooks.info

CONTENTS xi

10.4 Handling commands 200

Handling a built-in command 200 ■ Creating a custom

command 201 ■ Shortcuts and gestures 202

10.5 Command routing 203

10.6 A cleaner custom command implementation 204

Implementing a RoutedUICommand 204 ■ Adding a

CommandBinding 206

10.7 Summary 208

11 Data binding with WPF 209

11.1 WPF data binding 210

11.2 ProcessMonitor: A simple binding example 212

Binding Data with XAML 212 ■ Binding in code 217

Binding notation and options 219

11.3 Binding to XML 223

Creating the CVE Viewer application 225 ■ Binding controls

to XML 227 ■ XPath binding notation 228 ■ Path versus

XPath 229 ■ Understanding and using DataContexts 230

Master-Detail Binding 233

11.4 Binding to ADO.NET database objects 234

Creating a bookmark utility 236 ■ Creating the simple DAL 236

Laying out the UI and creating data bindings 238

11.5 Binding to business objects 242

Creating a WikiPage business object 242

ObservableCollection 243 ■ Create a model façade 244

Wiring business objects to presentation objects 246

11.6 Binding to LINQ data 250

11.7 Summary 252

12 Advanced data templates and binding 253

12.1 Data converters 254

Formatting bound data with StringFormat 255 ■ A number to

formatted string data converter 259 ■ Converter parameters 261

12.2 DataTriggers 263

12.3 CollectionViewSource 266

Sorting with CollectionViewSource 266 ■ Programatically sorting

with CollectionViewSource 268 ■ Filtering with

CollectionViewSource 270

www.it-ebooks.info

xii CONTENTS

12.4 Conditional templates 273

A more involved template 273 ■ Conditionally using

a template 275 ■ Templates based on type 277

12.5 Validators 278

The ExceptionValidationRule 278 ■ Custom

ErrorTemplates 280 ■ Custom validation rules 282

12.6 Model-View-ViewModel 283

12.7 Advanced binding capabilities 285

Hierarchical binding 285 ■ MultiBinding 289

PriorityBinding 295

12.8 Summary 298

13 Custom controls 299

13.1 Composing new user controls 301

Building a LinkLabel control 301

Testing the LinkLabel UserControl 304

13.2 Building custom controls 306

Building a control library 307 ■ Create the new custom

control 308 ■ Create the default template for the control 310

Testing the control 312 ■ Customizing a custom control with

a template 313

13.3 Summary 314

14 Drawing 315

14.1 Drawing with Shapes 317

Shapes in XAML 317 ■ Stupid shape tricks 321

14.2 Creating the graphing control 323

Building the GraphHolder control 323 ■ Graphing using

shapes 327 ■ Catching clicks 331 ■ The downside

of Shapes 332

14.3 Drawing with direct rendering 332

Recreating the graph control 333 ■ Pluses and minuses of

direct rendering 338

14.4 Drawing with Visuals 338

Control for display Visuals 339 ■ Hit testing with Visuals 342

Adding labels to our graph 344

www.it-ebooks.info

CONTENTS xiii

14.5 Drawings and Geometries 345

GeometryDrawing 348 ■ Using Drawings 349

14.6 Summary 351

15 Drawing in 3D 352

15.1 Lights, camera… 353

Models 354 ■ Lights 357 ■ Cameras 358

15.2 Graphing in 3D 359

15.3 3D Transforms 365

A 3D Transform in XAML 366 ■ A 3D Transform

in code 366

15.4 Summary 369

PART 4 THE LAST MILE................................................371

16 Building a navigation application 373

16.1 When and where to use navigation applications 374

16.2 Creating a basic navigation application 375

Adding some navigation 378 ■ Implementing dictionary

lookup 379 ■ Navigating programmatically 381

16.3 Page functions 384

Creating a Page function 384 ■ Calling a page function 386

16.4 Summary 389

17 WPF and browsers: XBAP, ClickOnce, and Silverlight 390

17.1 Building an XBAP 391

XBAP security 394 ■ Deploying an XBAP 396

When to use XBAP 399

17.2 Using ClickOnce 400

Deploying a WPF application via ClickOnce 401

When to use ClickOnce 402

17.3 Using Silverlight 403

17.4 Summary 405

www.it-ebooks.info

xiv CONTENTS

18 Printing, documents, and XPS 406

18.1 Printing flow documents 407

Setting up to print 408 ■ Customizing the output 411

Printing asynchronously 413

18.2 Printing FixedDocuments 415

Adding some FlowDocument content to our FixedDocument 417

Matching resolution 420 ■ Printing Visuals 421

18.3 XPS 422

Saving an XPS document to a file 422 ■ The problem

with images… 424

18.4 Summary 426

19 Transition effects 427

19.1 Building the World Browser application 428

The DictionaryLookup class 428 ■ Working with the Application

object 431 ■ Our WorldListView user control 432

Populating the country list 433

19.2 Adding a simple transition 436

19.3 Building a generic transition control 439

Creating the transition control 439 ■ Using the transition

control 442 ■ Defining a ControlTemplate for our control 443

Using the ABSwitcher 445

19.4 Adding some interesting transition effects 445

The fade effect 446 ■ Wipe effect 448 ■ Adding a selector

for effects 453

19.5 Summary 454

20 Interoperability 457

20.1 Using Windows Forms controls in WPF 458

Using the Windows Forms DateTimePicker in WPF 458

Enabling Windows themes for Windows Forms control 461

What you can’t do with embedded Windows Forms controls 462

Using your own Windows Forms controls 463 ■ Popping up

Windows Forms dialogs 464

20.2 Embedding ActiveX and C++ in WPF 466

Embedding ActiveX controls in WPF 466 ■ Embedding C++

controls in WPF 468

www.it-ebooks.info

Tải ngay đi em, còn do dự, trời tối mất!