Propriété de dépendance affecté avec la valeur de la liaison ne fonctionne pas

J'ai un usercontrol avec une dépendance de la propriété.

public sealed partial class PenMenu : UserControl, INotifyPropertyChanged
{
    public event PropertyChangedEventHandler PropertyChanged;
    protected void OnPropertyChanged(string propertyName)
    {
        if (PropertyChanged != null)
        {
            PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
        }
    }         

    public bool ExpandCollapse
    {
        get
        {
            return false;
        }

        set
        {
            //code
        }
    }
public static readonly DependencyProperty ExpandCollapseProperty = DependencyProperty.Register("ExpandCollapse", typeof(bool), typeof(PenMenu), null);
//some more code
}

Et je suis attribuer une valeur dans le code XAML de la page:

<Controls:PenMenu x:Name="penMenu" Opened="Menu_Opened" 
                         ExpandCollapse="{Binding PenMenuVisible}" />

Mais il n'est pas de frapper GET-DÉFINIR le cadre de ExpandCollapse propriété dans le contrôle usercontrol.
J'ai donc ajouté bool bool convertisseur juste pour vérifier que la valeur est passée avec la liaison comme:

<Controls:PenMenu x:Name="penMenu" Opened="Menu_Opened" 
                         ExpandCollapse="{Binding PenMenuVisible, Converter={StaticResource booleanToBooleanConverter}}" />

Et avec point d'arrêt dans le Convertisseur, je vois la valeur transmise est correct.
Quelle est la raison possible, c'est pas affectée à la Propriété de Dépendance?

Également dans le code XAML de la page si je dis:

<Controls:PenMenu x:Name="penMenu" Opened="Menu_Opened" 
                         ExpandCollapse="true"/>

puis il frappe l'ENSEMBLE de la partie de ExpandCollapse propriété dans le contrôle usercontrol.
Je suis coincé. C'est bizarre. S'il vous plaît aider.

Un problème commun. Désolé de vous avoir. Voir ma réponse ci-dessous.
Pour les développeurs à trouver cet, veuillez noter que lorsque le cadre de mise à jour d'une propriété de dépendance, il n'utilise PAS les propriétés CLR, il lit et écrit sur la pdd directement, ce qui est pourquoi vous devez utiliser l'événement a changé.

OriginalL'auteur ashish nirkhe | 2013-11-19