Capire perchè un binding non funziona come dovrebbe in WPF non è molto semplice, immaginiamo questa semplice situazione:

XAML

<Window x:Class="WPF_Databind.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Window1" Height="300" Width="300">
    <Grid>
        <TextBox 
            Text="{Binding Path=CustomerName}"
            Height="23" Margin="87,65,71,0" Name="textBox1" VerticalAlignment="Top" />
    </Grid>
</Window>
Codice
namespace WPF_Databind
{
    public partial class Window1 : Window
    {
        public Window1 ()
        {
            InitializeComponent();
            this.DataContext = new Customer() { Name = "Foo", Id = 42 };
        }
    }

    public class Customer
    {
        public string Name { get; set; }
        public int Id { get; set; }    
    }
}

L'errore è evidente, ma ciò che conta è che l'unica informazione utile l'abbiamo nella Output Window:

image 
Volendo ottenere maggiori dettagi relativi alla fase di binding, col framework 3.5 è possibile usare la nuova modalità di tracing esposta dalla classe PresentationTraceSources (in System.Diagnostics), modificando lo XAML precedente in:

<Window x:Class="WPF_Databind.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:diag="clr-namespace:System.Diagnostics;assembly=WindowsBase"                

    Title="Window1" Height="300" Width="300">
    <Grid>
        <TextBox 
            Text="{Binding Path=CustomerName, diag:PresentationTraceSources.TraceLevel=High}"
            Height="23" Margin="87,65,71,0" Name="textBox1" VerticalAlignment="Top" />
    </Grid>
</Window>

nella output window troviamo molte più informazioni utili a capire il problema.

image

Nota per Silverlight 2.0: questo XAML:

<TextBox Text="{Binding Path=Name}" Height="23" Margin="87,65,71,0" Name="textBox1" VerticalAlignment="Top" />

genera un errore: "Object not set to an instance of an object", la sintassi supportata da Silverlight è:

<TextBox Text="{Binding Name}" Height="23" Margin="87,65,71,0" Name="textBox1" VerticalAlignment="Top" />