Une liaison bidirectionnelle pour la zone de texte

Cette question a été posée ici pour des milliers de fois.
Mais vraiment, aucun de vos exemples et de réponses qui fonctionne pour moi.
Alors, permettez-moi de vous montrer mon code.

public class PlayList : INotifyPropertyChanged{
    public event PropertyChangedEventHandler PropertyChanged;

    public void OnPropertyChanged(string name) {
        var handler = PropertyChanged;
        if (handler != null) {
            PropertyChanged(this, new PropertyChangedEventArgs(name));
        }
    }

    private string _dl;
    public string DriveLetter {
        get { return _dl; }
        set {
            if (value != _dl) {
                _dl = value;
                OnPropertyChanged("DriveLetter");
            }
        }
    }
}

public partial class MainWindow : Window {
    public PlayList playlist = new PlayList();

    private void Window_Loaded(object sender, RoutedEventArgs e) {
        Binding bind = new Binding("DriveLetter");
        bind.Source = this.playlist;
        bind.Mode = BindingMode.TwoWay;
        bind.UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged;
        textBox1.SetBinding(TextBlock.TextProperty, bind);

        this.playlist.DriveLetter = "A";
    }
}

Bien sûr WPF ignore cette liaison (rien ne change quand je tape dans la zone de texte, et rien ne change quand je change de liste de lecture.Lettre de lecteur de la propriété.

Débogueur dit, que PropertyChanged gestionnaire n'est pas null

{Method = {Void OnPropertyChanged(System.Object, System.ComponentModel.PropertyChangedEventArgs)}}

Donc, les idées de ce que je fais de mal. (Je ne pas croire que WPF est mal)?

Merci d'avance!

Est-il une raison pourquoi vous êtes la construction de la liaison dans le code au lieu de XAML? Et avez-vous essayé d'utiliser des outils comme Snoop pour le débogage de l'liaisons, ou avez-vous essayé de définir des points d'arrêt dans votre propriété afin de voir si une exécution de code se passe là-bas?
Oui, il est tout à fait une bonne raison. Je veux utiliser la liste de lecture de l'objet plus tard dans le code.
Je ne dirais pas que c'est une bonne raison de le faire de cette façon.
Vous pouvez déclarer votre Playlist objet dans le code tout en le définissant comme le DataContext de la TextBox, ou tout simplement de fournir un bien pour cela que le XAML peut se référer pour cela à la source.

OriginalL'auteur mszubart | 2011-12-07