MSDN Documentation

Microsoft Developer Network - WPF APIs

WPF APIs: Windows Presentation Foundation

Windows Presentation Foundation (WPF) is a UI framework that creates a rich set of visual experiences for desktop applications. WPF enables you to create applications with a modern user interface and a rich set of features, including powerful data binding, graphics, animation, and styling capabilities.

This section provides an overview of the core APIs available in WPF and links to detailed documentation for various components.

Core Concepts and APIs

Controls

WPF offers a comprehensive set of built-in controls, from basic buttons and text boxes to complex data grids and media players. You can also create custom controls.

Key namespaces and classes include:

  • System.Windows.Controls: Contains fundamental UI controls like Button, TextBox, Label, Image, etc.
  • System.Windows.Controls.Primitives: Provides base classes and templates for controls, such as ButtonBase and ItemsControl.

Featured Controls:

Control Description Key Namespace
Button A clickable button. System.Windows.Controls
TextBlock Displays plain text or formatted text. System.Windows.Controls
ItemsControl Base class for controls that display collections of items. System.Windows.Controls
DataGrid Displays data in a tabular format. System.Windows.Controls

Layout Management

WPF's layout system is flexible and powerful, allowing you to arrange UI elements in various ways. Common layout panels include:

  • StackPanel: Arranges children in a single line.
  • Grid: Arranges children into a table-like structure of rows and columns.
  • DockPanel: Arranges children by docking them to the top, bottom, left, or right.
  • Canvas: Allows absolute positioning of children.
  • WrapPanel: Arranges children in a line, wrapping to the next line when space runs out.

These classes reside in the System.Windows.Controls namespace.

Data Binding

Data binding is a core WPF feature that connects UI elements to data sources. It simplifies the process of synchronizing data between your application's logic and its user interface.

Key concepts and classes:

  • Binding class: Configures the binding.
  • DataContext: The default data source for elements.
  • INotifyPropertyChanged interface: Used to notify the UI of data changes.
  • ObservableCollection: A collection that notifies listeners of dynamic changes.

These are found in the System.Windows.Data namespace.

Routing Events

WPF uses a routing event system, which allows events to travel through the element tree. This enables more flexible event handling, including event bubbling, tunneling, and direct events.

Key classes:

  • RoutedEventArgs
  • UIElement.AddHandler()
  • EventManager

Located in the System.Windows namespace.

Dependency Properties

Dependency properties are a specialized type of property that enables advanced features like data binding, styling, animation, and change notification. They offer more capabilities than standard .NET properties.

Key classes:

  • DependencyProperty
  • DependencyObject
  • GetValue(), SetValue()

Found in the System.Windows namespace.

UI Elements and Components

Buttons and Navigation

Explore various button types and navigation controls like menus, toolbars, and tabs.

Button

A standard clickable button. Supports content, commands, and styling.

<Button Content="Click Me" Click="MyButton_Click" />

ToggleButton

A button that can be toggled on or off.

Text and Input

Handles text display, user input, and rich text formatting.

TextBlock

Efficiently displays text content. Supports basic formatting like font, size, and color.

<TextBlock Text="Hello, WPF!" FontSize="24" FontWeight="Bold" />

TextBox

Allows users to enter and edit text. Supports single-line or multi-line input.

RichTextBox

Provides rich text editing capabilities, including formatting, paragraphs, and embedded objects.

Items Controls

Display collections of data in various formats.

ListBox

Allows users to select one or more items from a list.

ListView

Displays items in various views, commonly used for lists or tables.

TreeView

Displays hierarchical data in a tree-like structure.

Graphics and Animation

WPF excels in visual presentation, offering APIs for drawing, shapes, transformations, and animations.

DrawingContext

Used for custom drawing operations.

Shape classes (Rectangle, Ellipse, Line, Path)

Basic geometric shapes.

Transform classes (TranslateTransform, RotateTransform, ScaleTransform)

Apply transformations to elements.

Storyboard and DoubleAnimation

APIs for creating animations.

Advanced Topics

Styling and Templating

Customize the appearance and behavior of controls extensively using Styles and Control Templates.

Style

A collection of property values that can be applied to elements.

<Style TargetType="Button">
    <Setter Property="Background" Value="Blue" />
    <Setter Property="Foreground" Value="White" />
</Style>

ControlTemplate

Defines the visual structure of a control, replacing its default template.

VisualStateManager

Manages visual states for controls, often used with Control Templates.

Commands

Decouple user interface actions from the code that performs the actions using the Command pattern.

  • ICommand interface
  • RoutedCommand, RoutedUICommand
  • CommandBinding

Resources

Define and reuse objects (like Styles, Brushes, DataTemplates) within an application.

  • ResourceDictionary
  • Static and Dynamic Resource references (StaticResource, DynamicResource)

Comprehensive API Reference

For detailed API documentation, including class members, methods, properties, and examples, please refer to the official Microsoft Learn documentation:

System.Windows.Controls Namespace

System.Windows Namespace

System.Windows.Data Namespace

System.Windows.Media Namespace

System.Windows.Shapes Namespace