Laden...

Klick auf ein ListviewItem befüllt Textbox, weitere Datenquelle soll angezapft werden

Erstellt von Zaziggi vor 3 Jahren Letzter Beitrag vor 3 Jahren 786 Views
Z
Zaziggi Themenstarter:in
12 Beiträge seit 2020
vor 3 Jahren
Klick auf ein ListviewItem befüllt Textbox, weitere Datenquelle soll angezapft werden

Hallo liebe Sharp-Gemeinde,

nach stundenlangen glotzen und lesen von Tutorials über Databinding und Co. trete ich mal wieder mit einer Frage an euch heran:
Ziel ist es, beim klick auf ein ListviewItem(befüllt mit Kundennamen aus einer SQL), weitere
kundenspezifische Daten aus der SQL in Textboxen zu schreiben(was soweit mit Databinding funktioniert) und in einer weiteren Textbox Daten aus einer Textdatei auszulesen.
Jeder Kunde soll letztendlich seine eigene Txt haben, die beim Klick auf den Namen ausgelesen werden soll.

Der betreffende Xaml:


<ListView Name="lstKunden" Margin="4,20,40,100" ItemsSource="{Binding FiListe}"  Width="Auto" MinWidth="50">
 <ListView.View>
                            <GridView>
                                <GridViewColumn Header="Name" DisplayMemberBinding="{Binding Kunde}" Width="Auto"/>
                            </GridView>
                        </ListView.View>

//.....

<TextBox Margin="4" Text="{Binding  ElementName=lstKunden,  Path=SelectedValue.BIC}" ToolTip="BIC"/>
<TextBox x:Name="Vereinbarungvom" Text="{Binding VereinbarungVom[1]}"  Margin="0,4,0,4"/>

In die Textbox "Vereinbarungvom" sollen die Daten aus der TextDatei gelesen werden.

ViewModel:


    public class ModelView : INotifyPropertyChanged
    {
        private DateTime fiDatum = DateTime.Today;
        private string datumKonvertieren;
        DataView fiListe;
        private string[] getTxt;
        private string[] vereinbarungVom;


        public DataView FiListe
        { //stellt das Ergebnis der Abfrage für die ListView bereit
            get
            {
                SqlQueries sqlQueries = new SqlQueries();
                sqlQueries.SqlAbfrage = DatumKonvertieren;
                fiListe = sqlQueries.FinanziererListe.Tables[0].DefaultView;
                return fiListe;
            }
            set
            {
                SqlQueries sqlQueries = new SqlQueries();
                sqlQueries.SqlAbfrage = DatumKonvertieren;
                fiListe = sqlQueries.FinanziererListe.Tables[0].DefaultView;
                fiListe = value;
            }
        }

        public DateTime FiDatum
        { //setzt den Datepicker auf das aktuelle Datum

            get { return fiDatum; }

            set {

                fiDatum = value;
                OnPropertyChanged("FiListe");

            }
        }

        public string[] VereinbarungVom
        {
            get { return GetTxt; }
            set {
                value = GetTxt;
                vereinbarungVom = value;
                OnPropertyChanged("VereinbarungVom");
            }
        }

        public string[] GetTxt
        {
            get {
                //getTxt= File.ReadAllLines(@"Finanzierer\TestConfig.txt");
                return getTxt; }
            set
            {
                getTxt = File.ReadAllLines(@"Finanzierer\TestConfig.txt");
                getTxt = value;
             
            }
        }

        public event PropertyChangedEventHandler PropertyChanged;
        private void OnPropertyChanged(string property)
        {
            if (PropertyChanged != null)
                PropertyChanged(this, new PropertyChangedEventArgs(property));
        }

    }

Irgendwie muss ich die Property "VereinbarungVom" durch etwas ähnliches wie ein OnpropertyChanged("SelectedItem") in Gang bringen.
Bitte ein Schubs in die richtige Richtung. 😃

Sanfte Grüße

Zaziggi

5.657 Beiträge seit 2006
vor 3 Jahren

Was genau ist deine Frage? Was funktioniert nicht, und was hast du probiert?

Dein Code ergibt für mich jedenfalls keinen Sinn. Nimm mal nur als Beispiel dieses Property:

public string[] VereinbarungVom
{
  get { return GetTxt; }   
  set {
	value = GetTxt;
	vereinbarungVom = value;
	OnPropertyChanged("VereinbarungVom");
  }
}

Was genau erwartest du da, was beim Setzen des Wertes passiert?

Und warum benutzt du jetzt ausschließlich Eigenschaften, um deine gesamte Logik inkl. Datenbank- und Dateizugriffe zu implementieren?

Und es heißt übrigens "ViewModel", nicht "ModelView".

Ansonsten würde würde ich dir empfehlen, was ich dir schon in deinem letzten Beitrag empfohlen habe:

Da du mit WPF arbeitest, empfehle ich einen Blick in
>

Für allgemeine Infos zu Code-Strukturierung bzw. Software-Architektur gibt es den Artikel zur
>

Auch der Umgang mit dem Debugger erleichtert die Entwicklung sehr:
>

Und für das Arbeiten mit Datenbanken empfehle ich die Verwendung von ORM wie z.B. den Entity Framework.

Weeks of programming can save you hours of planning