Bindung Objekt-Fenster Textboxen in WPF

Habe ich eine Klasse namens Data mit einigen öffentlichen Mitglieder: Name, Age, Address.

Ich habe auch Fenster mit Textfeldern Name, Age, Address.

Den Data Objekt jederzeit ändern können.

Wie kann ich binden das Data Objekt zu den Eingabefeldern und Folgen Sie nach dem Objekt verpasst?

Ich weiß, es ist INotifyPropertyChanged und "dependency properties", aber ich weiß nicht wie man Sie benutzt.

Bearbeiten

public class MyData : INotifyPropertyChanged
{
  private string _name;

  public string Name
  {
    get
    {
      return _name;
    }
    set
    {
      if (_name != value)
      {
        _name = value;
        OnPropertyChnged("Name");
      }
    }
   }
   public event PropertyChangedEventHandler PropertyChanged;

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

XAML-code:

xmlns:myApp="clr-namespace:MyApp"
<Window.Resources><myApp:MyData x:key = data/></WindowResources>
<TextBox><TextBox.Text><Binding Source="{StaticResource data}" Path="Name" UpdateSourceTrigger="PropertyChanged"/></TextBox.Text></TextBox>

class OtherClass
{
  private MyData data;
  //the window that have the binding textbox
  private MyWindow window;
  public OtherClass()
  {
    data = new MyData();
    data.Name = "new name"
    window = new MyWindow();
    window.show();
  }
}
  • Die Umsetzung INotifyPropertyChanged sollte man 5 Minuten: 2 Minuten google-ing & 3 Minuten kopieren/einfügen in Ihren code... das Erlernen der syntax zu binden Sie Ihre TextBox auf ein Objekt sollte noch weniger Zeit nehmen 🙂
  • Eigentlich habe ich wpf-Buch, und ich verbringe mehr als 5 min google und ich immer noch nicht bekommen... Dies ist meine erste Zeit mit wpf und alles neu für mich
  • Hinzufügen Sie können Ihren code für die Definition der StaticResource-Daten?
  • Den code Hinzugefügt
  • Tut dies bauen, weil Sie scheinen, ein paar Tippfehler, die einem fehlt in der OnPropertyChanged("Name") und es gibt eine extra-p in PropertyChangedEventHandler?
  • Ich kann nicht kopieren und einfügen den code. Ich schrieb den code in den computer ohne internet-conection daher der Fehler. Ich fügte hinzu, mehr code, wo ich die Eigenschaft ändern und zeigen Sie das Fenster mit der Bindung textbox
  • Plus, werden Ihre Schlüssel für Ihre statischen Verweis auf fehlende doppelte Anführungszeichen, "Daten", Ihr fehlt ein Punkt in der WindowResources Schließenden tag.
  • Das ist eine andere Instanz von der Klasse, der Blick ist statische Ressource baut seine eigene Instanz der Klasse, also die, die Sie erstellen in OtherClass nicht gewöhnen. Sie konnte loszuwerden, die StaticResource-und dann stellen Sie die Verwendung der DataContext des Fensters, um die Instanz der Klasse, dann ändern Sie Ihre Bindung zu <TextBox Text="{Binding Name}"/>
  • Ich wusste nicht, dass. Danke, ich ändere es und lassen Sie wissen. können Sie mir zeigen, Basis auf meinen code, wo (in Fenster oder Gitter oder die bestimmte textbox) zu schreiben?
  • Ich bin mir nicht ganz sicher, was du meinst, meinst du die Einstellung der DataContext? Wenn ja, kannst du auch dein code-Beispiel oben : Fenster.DataContext = Daten; vor dem anzeigen des Fensters.
  • Vielen Dank Paulie und Ing 'O'. Ich muss jetzt gehen, die so Krank versuchen Sie es morgen.

InformationsquelleAutor Maya | 2011-06-22
Schreibe einen Kommentar