4 Stimmen

Zwei-Wege-Bindung für TextBox

Diese Frage wurde hier schon tausende Male gestellt. Aber wirklich, keines Ihrer Beispiele und Antworten funktioniert für mich. Lassen Sie mich Ihnen also meinen Code zeigen.

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";
    }
}

Ofcourse WPF ignoriert diese Bindung (nichts ändert sich, wenn ich in Textfeld eingeben, und nichts ändert sich, wenn ich playlist.DriveLetter Eigenschaft ändern.

Der Debugger sagt, dass der PropertyChanged-Handler nicht null ist

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

Hat jemand eine Idee, was ich falsch mache? (Ich glaube nicht, dass WPF falsch ist)?

Vielen Dank im Voraus!

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X