Binding from XAML doesn't work
<p>When I create binding in code like in the following example, everything works fine:</p>

<pre><code> public partial class BindingToCustomType : Window {
    public Craftsman Craftsman { get; set; }
    public BindingToCustomType() {
        InitializeComponent();

        Craftsman = new Craftsman() {Age = 45, LastName = "Joe", Name = "Grok"};

        Binding binding = new Binding();  
        binding.Source = Craftsman;    
        binding.Path = new PropertyPath("Name");   
        NameBlock.SetBinding(TextBlock.TextProperty, binding);
    }
</code></pre>

<p>XAML:</p>

<pre><code>&lt;Window x:Class="DataBinding.BindingToCustomType"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d"
    x:Name="Window"
    Title="BindingToCustomType"&gt;

    &lt;TextBlock x:Name="NameBlock" Width="120" FontSize="16" Foreground="Red" /&gt;
&lt;/Window&gt;
</code></pre>

<p>When I try to set that binding purely in XAML, it doesn't work:</p>

<pre><code>&lt;TextBlock x:Name="NameBlock" Width="120" FontSize="16" Foreground="Red" Text="{Binding Source=Craftsman, Path=Name, Mode=OneWay}"/&gt;
</code></pre>

<p>Even if I set data context on the Window element, it doesn't work:</p>

<pre><code>  DataContext="{Binding RelativeSource={RelativeSource Self}}"
</code></pre>

<p>I don't want the solution to this problem.
I want to understand <strong>WHY</strong> this doesn't work in XAML either with DataContext, or without.</p>