Dependency Property on a user control not updating the property when bound data changes
<p>I've seen other have this issue on occasion and best I can tell I have duplicated several variations of their fixes but have not yet gotten this to work.</p>

<p>I know my bound data is sending proper INotify events because I can bind other controls to the data like textblocks and see its content change as the objects property changes, but my user control does not seem to be receiving the event at all.</p>

<pre><code>public partial class MappingSelector : UserControl
{
    public Type OutputDriver
    {
        get { return (Type)GetValue(OutputDriverProperty); }
        set { Console.WriteLine(value.ToString()); SetValue(OutputDriverProperty, value); UpdateUI(); }
    }

    // Using a DependencyProperty as the backing store for OutPutDriver.  This enables animation, styling, binding, etc...
    public static readonly DependencyProperty OutputDriverProperty =
        DependencyProperty.Register("OutputDriver", typeof(Type), typeof(MappingSelector), new PropertyMetadata(null));
    public MappingSelector()
    {
        InitializeComponent();
        (this.Content as FrameworkElement).DataContext = this;
        //UpdateUI();
    }
}
</code></pre>

<p>The setter has a console trace that never fires so I am confident that the property is never being set.</p>

<p>I am then binding to it using:</p>

<pre><code>&lt;root:MappingSelector OutputDriver="{Binding LoadedProfile.UsedDriverInterface, ElementName=page, UpdateSourceTrigger=PropertyChanged}"/&gt;
</code></pre>

<p>And I know <code>LoadedProfile.UsedDriverInterface</code> is updating and sending the proper events because I also have this which works just fine:</p>

<pre><code>&lt;TextBlock Text="{Binding LoadedProfile.UsedDriverInterface, ElementName=page, UpdateSourceTrigger=PropertyChanged}"/&gt;
</code></pre>

<p>Late Edit:
This works but is it really what I need to do? Is there no better way?
Added this to the user control constructor;</p>

<pre><code>        var OutputDriverDPD = DependencyPropertyDescriptor.FromProperty(OutputDriverProperty, typeof(MappingSelector));
        OutputDriverDPD.AddValueChanged(this, (sender, args) =&gt;
        {
            OutputDriver = (Type)GetValue(OutputDriverProperty);
        });
</code></pre>