Ich muss wohl noch eine Menge lernen, denn leider verstehe ich nur die Hälfte von was du da geschrieben hast...
Wie schon geschrieben: ich bin Anfänger und das sind nur Übungen, um mich mit C# + WPF + DataBinding vertraut zu machen (das man die "ToString"-Methode so in der Praxis nicht nutzt ist mir klar ).
Wie wäre nun der richtige Weg um das Binding der Liste hinzubekommen?
Ich habe schon im Internet recherchiert, aber noch nichts gefunden...
ich bin Anfänger in C# und mache gerade ein paar Übungen in DataBinding.
Textboxen im Konstruktor mit DataContext zu füllen, beherrsche ich schon gut...
Ich versuche gerade eine ListBox über DataContext mit Daten von Autos (Datentyp ObservableCollection) zu füllen. Leider wird nichts in der Vorschau oder beim Ausführen des Programms angezeigt.
Bei 'ItemsSource="{Binding AutoListe}"' wird der Wert 'AutoListe' mit drei Punkten markiert und wenn ich mit der Maus drübergehen, erscheint die Quick-Info:
Fehler
Für Binding "AutoListe" wurde kein DataContext gefunden.
Beim Ausführen des Programm kommt die Binding-Fehlermeldung:
Fehler
Die Eigenschaft "AutoListe" wurde im Objekt vom Typ "ObservableCollection`1" nicht gefunden.
Ich habe keine Ahnung was ich falsch mache - bei den Textboxen lief alles einwandfrei...
Hat jemand eine Idee?
Danke für jede Hilfe im Voraus.
LG,
sacoma
PS:
Hier ist mein Code von der UI 'SubTemplates3.xaml':
Hier ist mein Code von der Code-Behind 'SubTemplates3.xaml.cs':
namespace NeuesFensterWPF
{
/// <summary>
/// Interaktionslogik für SubTemplates3.xaml
/// </summary>
public partial class SubTemplates3 : Window
{
public SubTemplates3()
{
InitializeComponent();
ObservableCollection<Auto> AutoListe = new ObservableCollection<Auto>
{
new Auto() { Marke = "Audi", Modell = "R8", PS = 610, Logo = "Images/logo_audi.jpg" },
new Auto() { Marke = "Bentley", Modell = "CS", PS = 630, Logo = "Images/logo_bentley.jpg" },
new Auto() { Marke = "Lambo", Modell = "LP 700", PS = 700, Logo = "Images/logo_lambo.jpg" },
new Auto() { Marke = "SEAT", Modell = "DSG", PS = 300, Logo = "Images/logo_seat.jpg" },
new Auto() { Marke = "Skoda", Modell = "RS", PS = 230, Logo = "Images/logo_skoda.jpg" },
new Auto() { Marke = "VW", Modell = "TDI 8", PS = 240, Logo = "Images/logo_vw.jpg" }
};
DataContext = AutoListe;
}
}
}
Hier wäre noch der Code aus der Klasse 'Auto' falls es von Bedeutung ist:
namespace NeuesFensterWPF
{
public class Auto
{
public string Marke { get; set; }
public string Modell { get; set;}
public int PS { get; set; }
public string Logo { get; set; }
public override string ToString()
{
//base.ToString();
return $"Marke: {Marke} | Modell: {Modell} | Leistung: {PS} | Logo: {Logo}";
}
}
}
ich bin erst seit diesen Jahr mit der Umschulung zur Fachinformatikerin für Anwendungsentwicklung fertig geworden und totale Anfänger mit C# und Visual Studio IDE.
Wegen Jobwechsel muss ich aber fit darin werden...
Deshalb habe ich mir Visual Studio 2022 installiert und angefangen die Grundlagen zu lernen.
Leider scheitere ich gerade daran ein Programm mit einer Datenbankverbindung zu coden.
Es kommt folgende Fehlermeldung bei der Zeile mit dem Code-Befehl "verbindung.Open();", wenn ich das Programm ausführe:
Fehler
System.IO.FileNotFoundException
HResult=0x80070002
Nachricht = Could not load file or assembly 'System.Security.Permissions, Version=0.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51'. Das System kann die angegebene Datei nicht finden.
Quelle = MySql.Data
Stapelüberwachung:
bei MySql.Data.MySqlClient.MySqlConnection.AssertPermissions()
bei MySql.Data.MySqlClient.MySqlConnection.Open()
bei datenbank.Program.Main(String[] args) in C:\Users\HP\source\repos\datenbank\datenbank\Program.cs: Zeile30
Ich verstehe nicht, warum Visual Studio die Datei nicht findet, ich habe den Verweis unter Menü "Projekt -> Projektverweis hinzufügen..." folgenden Pfad hinzugefügt: "C:\Program Files (x86)\MySQL\Connector NET 8.0\Assemblies\v4.8\MySql.Data.dll"
Hier ist mein Code:
using MySql.Data.MySqlClient;
namespace datenbank
{
internal class Program
{
static void Main(string[] args)
{
string verbindungsdaten = "SERVER=localhost;" + "DATABASE=db;" + "UID=admin;" + "PASSWORD=4d1nP4??w0rt;";
MySqlConnection verbindung = new MySqlConnection(verbindungsdaten);
Console.Write("Geben Sie bitte die Artikelnr. ein: ");
int artikelnummer = int.Parse(Console.ReadLine());
Console.WriteLine("Geben Sie bitte den Fahrradtyp ein: ");
string typ = Console.ReadLine();
Console.WriteLine("Geben Sie bitte die Farbe ein: ");
string farbe = Console.ReadLine();
Console.WriteLine("Geben Sie bitte den Preis ein: ");
double preis = double.Parse(Console.ReadLine());
string befehl = "INSERT INTO fahrraeder VALUES (" + artikelnummer + " , '" + typ + "', '" + farbe + "', " + preis +");";
MySqlCommand befehlsobjekt = new MySqlCommand(befehl);
befehlsobjekt.Connection = verbindung;
verbindung.Open();
befehlsobjekt.ExecuteNonQuery();
verbindung.Close();
string befehl2 = "SELECT * FROM fahrraeder;";
MySqlCommand befehlsobjekt2 = new MySqlCommand(befehl2);
befehlsobjekt2.Connection = verbindung;
MySqlDataReader Reader;
verbindung.Open();
Reader = befehlsobjekt2.ExecuteReader();
while (Reader.Read())
{
string zeile = "";
for (int i =0; i < Reader.FieldCount; i++)
{
zeile += Reader.GetValue(i).ToString() + " ";
Console.WriteLine(zeile);
}
}
verbindung.Close();
}
}
}
Ich hoffe, dass mir hier jemand helfen kann, denn im Internet habe ich nichts zu meinem Problem gefunden.
Vielen Dank im Voraus.