WPF Binding using `ElementName` fails but specifying the ElementName in Path property works?
<p>I have this xaml in my project:</p>

<pre><code>&lt;UserControl x:Class="MyControl"
            ... x:Name="Control"&gt;

 &lt;Grid x:Name="DetailsGrid" &gt; // &lt;-- I set the data object on this in code
    &lt;Button x:Name="IconBtn" IsEnabled="{Binding IsEditing, ElementName=Control}" 
        Style="{DynamicResource ImageButton}" Click="IconBtn_Click" &gt;
...
&lt;Grid&gt;
&lt;/UserControl&gt;
</code></pre>

<p>I have <code>IsEditing</code> dependency property defined in <code>MyControl</code> class.</p>

<pre><code>namespace MyNamespace
{

    public partial class MyControl : UserControl, INotifyPropertyChanged
    {
       ...
       public bool IsEditing { get; set; }
       ....
    }
}
</code></pre>

<p>The above code fails to enable/disable the <code>IconBtn</code> button.
But the following which Binds <code>IsEnabled="{Binding Control.IsEditing}"</code> works.</p>

<pre><code>&lt;UserControl x:Class="MyControl"
        ... x:Name="Control"&gt;
&lt;Grid x:Name="DetailsGrid" &gt; // &lt;-- I set the data object on this in code
    &lt;Button x:Name="IconBtn" IsEnabled="{Binding Control.IsEditing}" 
        Style="{DynamicResource ImageButton}" Click="IconBtn_Click" &gt;
...
&lt;Grid&gt;
&lt;/UserControl&gt;
</code></pre>

<p>Please tell me the difference between </p>

<pre><code>IsEnabled="{Binding IsEditing, ElementName=Control}"
</code></pre>

<p>and </p>

<pre><code>IsEnabled="{Binding Control.IsEditing}" 
</code></pre>

<p>Im new to WPF and C#. </p>

<hr>

<p><strong>EDIT:</strong>
But this works in some other part of the same xaml:</p>

<pre><code>IsReadOnly="{Binding IsEditing ElementName=Control}"
</code></pre>