static void

WPF

Resources

You can reference .net static classes by adding the xaml namespace (eg xmlns:local="clr-namespace:WpfApplication1") and using {x:Static ...}.
Binding to changing properties like SystemColors and other dependency properties requires {DynamicResouce {x:Static MyKey }}. Ugh.

<TextBlock Text="{x:Static local:StaticSettings.ConnectionString}"/>

A StaticResource is a dictionary with an x:Key. They can be defined anywhere up the hierarchy to Application, as long as they are before the reference. In code, you can use TryFindResource("x").
NB: a DynamicResource can redefine the dictionary item.

Binding

Otherwise use Source, or set the DataContext on the element or container.
Controls that display collections (like ListBox) have an ItemSource (bind to collection object) and a DisplayMemberPath (property to display).

DataTemplate

Use a DataTemplate to display a richer view of the items (in control.Content or itemcontrol.ItemTemplate).
DataTemplates can be resources, and can have a DataType.

Formatting: Binding has a StringFormat={}{0} items, (you have to use the {} escaping at the start) - it only works on controls with string Text
Content controls have ContentStringFormat, list controls have ItemStringFormat.
For more complex conversions, implement IValueConverter, hook it up as a resource, and add , Converter={StaticResource myConverter

Debugging binding

You can debug individual bindings (from 3.5) by referencing xmlns:diagnostics="clr-namespace:System.Diagnostics;assembly=WindowsBase" and appending ", diagnostics:PresentationTraceSources.TraceLevel=High" to the path.

Commands

Controls like button have a Command property (and commands can also have gestures/keys attached).
If it's not a built in command (ApplicationCommands.Paste), a command needs a handler method (think event, like above), which is linked to the command by a commandBinding.
CommandBindings bubble up - the control checks it's bindings for a handler, then works up to Window to find a binding that gives it a handler. If there is no binding - the control is disabled.

Custom commands are static classes with a static Routed[UI]Command getter, which is what the control "Command=" points to.

Remember to add the xmlns:local="clr:namespace:..." to the command class namespace