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)
<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:
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!)
"Man muß die Dinge so einfach wie möglich machen. Aber nicht einfacher." Albert Einstein
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.
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 ...
"Man muß die Dinge so einfach wie möglich machen. Aber nicht einfacher." Albert Einstein
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 😃
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code