none
Anbinden von Klasen-Feldern an Controls aus einer List<Klasse>, die zur Laufzeit entsteht RRS feed

  • Frage

  • Hallo zusammen,

    ich habe da eine List<Klasse> collection die zur Laufzeit entsteht (beim initialisieren von App), und die hat Felder (u.a. unic ID), die ich an zB.  textBox1.Text anbinden möchte. Die Controls wiederrum sind schon fest im Fenster projektiert. Dabei ein TextBox in diesem Fenster enstpricht zB dem Feld 'Value', wo die ID von dem Member zb. 3 ist...

    Wie könnte man sowas realisieren? Ich habe überlegt, aber auf Anhieb fällt mir nichts ein...

    Grüsse - Raphael

    Mittwoch, 6. Oktober 2010 16:57

Antworten

  • Hi hexboy,
    Deine Beschreibung ist etwas unklar. Ein Klasse "List" hat keine Eigenschaften "ID" und "Value".
     
    Ich vermute, dass Du ein Objekt vom Typ List(Of DatenKlasse) hast und die Klasse "Datenklasse" die Eigenschaften "ID" und "Value" hat. In einer TextBox möchtest Du einen Wert als "Suchwert" für "ID" eingeben. Mit Bestätigung der Eingabe soll in der Liste das Objekt mit "ID"="Suchwert" gefunden werden und aus diesem Objekt der Inhalt von "Value" in einer anderen TextBox angezeigt werden.
     
    Wenn das so ist, dann erstelle eine Klasse ViewModel mit den Eigenschaften "Suchwert" und "DetailView". "Suchwert" bindest Du direkt an die TextBox für den Suchwert und "DetailView" nutzt Du als DataContext für den Container mit der Textbox für die Anzeige des Inhaltes Deines Datenobjektes. In der Eigenschaft "Suchwert" im ViewModel suchst Du mit einem LinQ und FirstOrDefault das Element und weist es dem DetailView zu. Mit INotifyPropertyChanged teilst Du der Oberfläche mit, dass sich "DetailView" geändert hat.
     

    --
    Viele Gruesse
    Peter

    Donnerstag, 7. Oktober 2010 05:06

Alle Antworten

  • Hi hexboy,
    Deine Beschreibung ist etwas unklar. Ein Klasse "List" hat keine Eigenschaften "ID" und "Value".
     
    Ich vermute, dass Du ein Objekt vom Typ List(Of DatenKlasse) hast und die Klasse "Datenklasse" die Eigenschaften "ID" und "Value" hat. In einer TextBox möchtest Du einen Wert als "Suchwert" für "ID" eingeben. Mit Bestätigung der Eingabe soll in der Liste das Objekt mit "ID"="Suchwert" gefunden werden und aus diesem Objekt der Inhalt von "Value" in einer anderen TextBox angezeigt werden.
     
    Wenn das so ist, dann erstelle eine Klasse ViewModel mit den Eigenschaften "Suchwert" und "DetailView". "Suchwert" bindest Du direkt an die TextBox für den Suchwert und "DetailView" nutzt Du als DataContext für den Container mit der Textbox für die Anzeige des Inhaltes Deines Datenobjektes. In der Eigenschaft "Suchwert" im ViewModel suchst Du mit einem LinQ und FirstOrDefault das Element und weist es dem DetailView zu. Mit INotifyPropertyChanged teilst Du der Oberfläche mit, dass sich "DetailView" geändert hat.
     

    --
    Viele Gruesse
    Peter

    Donnerstag, 7. Oktober 2010 05:06
  • Hallo Peter,

    genau sowas habe ich gemeint, nur die Id ist fest für jedes Control, also in Init schon irgendwo zugeteilt. Das heißt aber, wenn ich 200 Objekte in meiner Liste habe, dass ich zusätzlich 200 Instanzen von der ViewModel erstellen muß um dann 200 DataContexts zu erstellen. Fürs erste ist aber ganz ok, dass es überhaupt funktionieren wird.

    Ich habe mir gedacht, dass es vielleicht mit der 'Tag' Eigenschaft geht, dass ich da meinen ID hiterlasse, oder die Funktionalität von meinen Standard-Controls erweitere.

    Aber super, werde erstmal das so lösen. Vielen dank und

    Viele Grüsse - Raphael

    Sonntag, 10. Oktober 2010 15:12