myCSharp.de - DIE C# und .NET Community
Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 
 | Suche | FAQ

» Hauptmenü
myCSharp.de
» Startseite
» Forum
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Suche
» Regeln
» Wie poste ich richtig?
» Forum-FAQ

Mitglieder
» Liste / Suche
» Wer ist wo online?

Ressourcen
» openbook: Visual C#
» openbook: OO
» Microsoft Docs

Team
» Kontakt
» Übersicht
» Wir über uns

» myCSharp.de Diskussionsforum
Du befindest Dich hier: Community-Index » Diskussionsforum » Entwicklung » GUI: WPF und XAML » MVVM - Vorgehensweise: Abfrage einer ICollectionView, Eintragen in Model ...
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | Thema zu Favoriten hinzufügen

Antwort erstellen
Zum Ende der Seite springen  

MVVM - Vorgehensweise: Abfrage einer ICollectionView, Eintragen in Model ...

 
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
echdeneth echdeneth ist männlich
myCSharp.de-Mitglied

avatar-178.gif


Dabei seit: 05.06.2019
Beiträge: 85
Entwicklungsumgebung: C# / Visual Studio 2019
Herkunft: Sachsen, Herrnhut/Zittau


echdeneth ist offline

MVVM - Vorgehensweise: Abfrage einer ICollectionView, Eintragen in Model ...

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Ich habe ein Control in dem ein:
Datagrid (ICollectionView1 von ObservableCollection - in dieser Problematik irrelevant)
Textblock und co (Model) und ein
Button => DialogHost mit einer Artikelübersicht (ICollectionView2 von selbiger ObservableColl... + Filter) enthalten ist.

Nun wollte ich gerne das die Abfrage der CollectionView2, die Darstellung in Textblock und co und die Abfrage für ein SQl-Query über ein Model (ein und dasselbe) läuft. Aktuell mache ich das Altmodisch.

Der XAML für die ListView im DialogHost (für Abfrage der Auswahl)

XML-Code:
                            <ListView x:Name="DH_List" Margin="4"
                                      ItemsSource="{Binding ArtikelView}"
>
                                <ListView.ItemTemplate>
                                    <DataTemplate>
                                        <DockPanel>
                                            <TextBlock Text="{Binding ID}" Width="30" Margin="4"/>
                                            <TextBlock Text="{Binding Name}" Margin="4"/>
                                        </DockPanel>
                                    </DataTemplate>
                                </ListView.ItemTemplate>
                            </ListView>

Aktuelle Abfrage:

C#-Code:
        private void Btn_Artikelauswahl_Click(object sender, RoutedEventArgs e)
        {
            stackP.Visibility = Visibility.Visible;
            Eintrag item = (Eintrag)DH_List.SelectedItem;
            eintrag.ID = item.ID;
            eintrag.Artikelnummer = item.Artikelnummer;
            eintrag.Menge = item.Menge;
            eintrag.Datum = item.Datum;
            eintrag.Name = item.Name;

            //Tb_ID.Text = item.ID.ToString();
            //Tb_Artikelnummer.Text = item.Artikelnummer;
            //Tb_Menge.Text = item.Menge.ToString();
            //Tb_Datum.Text = item.Datum.ToString();
        }

Wie kann ich im CodeBehind das Model "ansprechen"? Oder wo liegt mein Denkfehler?
Ich mache das aktuell mit Element.Content = "BlaBla" weil ich gewisse Funktionen (SQL) nicht aus dem Codebehind rauskriege und daher verwendete Klassen in CodeBehind initialisieren muss.

ich bitte um Nachsicht falls mein Anliegen ungenügend dargelegt wurde. (Fragen!)
29.01.2020 09:39 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Th69
myCSharp.de-Poweruser/ Experte

avatar-2578.jpg


Dabei seit: 01.04.2008
Beiträge: 3.593
Entwicklungsumgebung: Visual Studio 2015/17


Th69 ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Du solltest MVVM benutzen (anstatt CodeBehind), s.a.  [Artikel] MVVM und DataBinding.
Und Datenbankabfragen (SQL) sollten in einer eigenen Datenzugriffsschicht erfolgen, s.  [Artikel] Drei-Schichten-Architektur.
29.01.2020 10:17 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
echdeneth echdeneth ist männlich
myCSharp.de-Mitglied

avatar-178.gif


Dabei seit: 05.06.2019
Beiträge: 85
Entwicklungsumgebung: C# / Visual Studio 2019
Herkunft: Sachsen, Herrnhut/Zittau

Themenstarter Thema begonnen von echdeneth

echdeneth ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Zitat von Th69:
Und Datenbankabfragen (SQL) sollten in einer eigenen Datenzugriffsschicht erfolgen...

Ja ich weiss, genau das krieg ich nicht hin - deswegen Klassen in CodeBehind und der ganze Ärger ...
29.01.2020 11:15 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Abt
myCSharp.de-Team

avatar-4119.png


Dabei seit: 20.07.2008
Beiträge: 13.835
Herkunft: Stuttgart/Stockholm


Abt ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Dann versuch aber erst mal die Grundzüge zu lernen, dass Du es eben hinbekommst.

Das Problem ist, dass Du Dir mit dem Code Behind mehr Ärger einfängst, als Lösung schaffst :-)
29.01.2020 11:22 Beiträge des Benutzers | zu Buddylist hinzufügen
Baumstruktur | Brettstruktur       | Top 
myCSharp.de | Forum Der Startbeitrag ist älter als 4 Monate.
Der letzte Beitrag ist älter als 4 Monate.
Antwort erstellen


© Copyright 2003-2020 myCSharp.de-Team | Impressum | Datenschutz | Alle Rechte vorbehalten. | Dieses Portal verwendet zum korrekten Betrieb Cookies. 05.06.2020 00:03