2017-12-31 143 views
0

Ich verwende ein Raster, um Textfelder und Kombinationsfelder zu halten. Ich möchte das ausgewählte Element aus den Kombinationsfeldern und den Text aus den Textfeldern abrufen. Gibt es eine Möglichkeit, dies zu tun, ohne das UIElement als Combo oder Textfeld zu casten. Im Folgenden mache ich das gerade.Abrufen von Text aus einer WPF-Combobox oder einem Textfeld in C#

foreach (UIElement field in _fields) 
{ 

    string val=""; 
    if (field is TextBox) 
    { 
     TextBox bx = field as TextBox; 
     val=bx.Text; 
    } 
    else if (field is ComboBox) 
    { 
     ComboBox bx = field as ComboBox; 
     val=bx.SelectedItem.ToString(); 
    } 
} 

Dank

+0

Mit dem MVVM-Muster würden Sie ein Ansichtsmodell haben, das mit den Daten im Fenster/der Seite synchron bleibt, was bedeutet, dass Sie nie in die tatsächlichen Steuerelemente greifen müssen. Was ist der Zweck dieses Codes? Es scheint so, als würde "val" immer den Wert des letzten Steuerelements haben, das überschliffen wird. – Crowcoder

+0

Ich werde versuchen und erklären, im Grunde entwickle ich eine Art Textdatei-Editor, der eine bestimmte Syntax benötigt. Es gibt einen Abschnitt der Datei mit 6-11 Feldern, die durch ein ':' getrennt sind, einige Felder können eine Anzahl von Optionen haben, daher das Kombinationsfeld, andere brauchen nur einen Namen oder einen Zeichenfolgenwert. Es gibt eine Funktion, um die Syntax der Datei zu überprüfen. Der obige Code durchläuft einfach jede vom Benutzer eingegebene Zeile, ruft den Text ab und erstellt ein Dateiobjekt für die Validierungsfunktion. val sind nur die Daten, die ich dem Dateiobjekt hinzufügen möchte –

Antwort

1

Der beste Weg, um Daten in WPF zuzugreifen, ist die Datenbindung zu nutzen oder sogar MVVM verwenden. Ein schneller und schmutziger Weg könnte darin bestehen, Ihren Elementen einen Namen zu geben, indem Sie x: Name in Ihrem XAML zuweisen. Dann müssen Sie die Elemente in Code nicht hinterher werfen.

Verwandte Themen