sun-ja schrieb:
Ich habe genau deinen Code implementiert
Die Antwort ist eigentlich ziemlich nutzlos. Korrekt wäre, wenn du uns hier ein kleiner Auschnitt, am besten einen Beispielcode präsentierst. Sonst können wir weiterhin nur Rätselraten. Auch ist die Fehlerbeschreibung äusserst dürftig. "Geht nicht" ist keine Fehlerbeschreibung.
Aber ich mache mal ein bisschen Rätselraten, weil mir grad drum war. Dabei nehme ich an, dass der Fehler wie folgt lautete:
System.Windows.Data Error: 2 : Cannot find governing FrameworkElement or FrameworkContentElement for target element. BindingExpression:Path=Items; DataItem=null; target element is 'CollectionViewSource' (HashCode=29666725); target property is 'Source' (type 'Object')
Probier daher mal das da:
<Window.Resources>
<CollectionViewSource Source="{Binding Path=Items}" x:Key="cvs">
<CollectionViewSource.SortDescriptions>
<scm:SortDescription PropertyName="Position" />
</CollectionViewSource.SortDescriptions>
</CollectionViewSource>
</Window.Resources>
...
<ItemsControl ItemsSource="{Binding Source={StaticResource cvs}}" />
Hallo zusammen
Eine Frage zum EntityFramework 6.1. Hoffe hier kennen sich ein paar aus.
Ich erzeuge mir ein neues Object (Entity) und füge es mit Attach dem DbContext hinzu.
Das Objekt besitzt nun Schlüssel zu anderen Objekten in der Datenbank.
Einträge werden nun nach SaveChanges korrekt in die Datenbank eingefügt. Aber nur bei den Tabellen bei dennen eine n:n Beziehung bestehen zum eingefügten Objekt. Bei einer 1:n Beziehung nicht.
Kann mir das jemand erklären. (Hoffe das meine Erklärung auch verständlich ist).
freakC++ schrieb:
Dazu muss zunächst die "GetObjectData" Methode implementiert werden und außerdem wird zur Deserialisierung ein bestimmter Konstruktor der Form
Ehm, Du "musst" nicht, Du "kannst". Man kann GetObjectdata und den CTor überschreiben wenn man custom serialisieren will. Solange die standard Serialisierung des Framework für Dich OK ist musst Du lediglich [Serializble] auf den Childklassen setzen, also:
[Serializable]
class bla { }
freakC++ schrieb:
Wie löse ich am besten das Problem ohne in jeder Kindklasse den gleichen Code zu kopieren?
Wenn die Klassen unterschiedliche Parameter haben musst Du eine Custom-Serialisierung eh pro Klasse implementieren, daran kommst Du nicht vorbei. Die Basisklasse kann schließlich nicht die Parameter der Childs kennen.
Es ist vollbracht
@Dravere, @Th69, Euch beiden gilt mein ganzer Dank. Es funktioniert nun.
Des Rätsels Lösung: pack=1
Dravere, Dein Tipp war also genau der richtige.
Interessant und beeindruckend finde ich, wie schnell Du eine Ferndiagnose gemacht hast.
Zwar hatte ich mich über pragma... gewundert. Aber nachdem ich in zwei Büchern nichts gefunden habe, habe ich es als irrelevant ignoriert.
So kann man sich täuschen. Und wieder etwas gelernt.
Ich danke Euch beiden nochmals und wünsche Euch ein sonniges Wochenende
Liebe Grüße
Wedgewood
Erstmal das ganze Gedöns in ein List<List<string>> einlesen und diese Listen dann parsen. In Abhängigkeit der Units erstellst Du eben Objekte des richtigen Typs in einer kleinen Factory-Methode.
Hingefrickelt:
static List<List<string>> LoadCSV(string filepath, char separator)
{
if (!File.Exists(filepath))
throw new ArgumentException(string.Format("File {0} does not exist", filepath));
var lines = File.ReadAllLines(filepath).ToList();
var res = new List<List<string>>(lines.Count);
lines.ForEach(line =>
{
var split = line.Split(new char[] { separator }, StringSplitOptions.RemoveEmptyEntries);
if (split != null && split.Length > 0)
res.Add(new List<string>(split));
});
return res;
}
Anmerkung: RemoveEmptyEntries ist evtl nicht was du willst. Denn bei festen Positionen ist es sinnvoller die Leereinträge nicht auszusortieren.
List<List<string>> csv = LoadCSV(@"C:\test.csv", ';');
foreach(var line in csv)
{
string itemType = line[2];
if(itemType == "WS_Gruppe_Statuswort")
{
}
else if (itemType == "WS_M1_Sollwert_Aut")
{
}
//...
}
Ich wollte nur mal anmerken, dass Arrays in C# mit dem Defaultwert des Typs initialisiert werden. Die Schleife ist also unnötig, womit die ganze Funktion rausfliegen kann.
Hab jetzt auch herrausgefunden, dass der Window-Thread vom MainWinHandle das system auslastet!
Die Frage ist was ich machen!? WPF hat ja nen Rendering-Thread und nen UI Thread zur usser interaktion, abee wie stehen die in Verbindung mit dem nativen Winthread des Process mainwinhandle!?
Ich bin ratlos:(
Ich verstehe nicht was du meinst. Aber Thread.Sleep macht mir schonmal dezente Sorgen. Was machst du da? Wieso verlangsamst du die Ausfuehrung unnoetig?
Habe gerade kein Compiler zur Hand, aber meine Idee waere dass du nicht das Interface generisch machst, sondern die Methode die in dem Interface deklariert wird.
Übergebe die Mainform nicht an Application.Run
Form1 form = new Form1();
form.Show();
Application.Run();
Dann kann sie geschlossen werden ohne dass die Anwendung sich beendet.
Prof84 schrieb:
für weitere Seelsorge wendet Euch an volkard ...
Wir möchten keine Seelsorge. Wir würden dir gerne helfen bei deinen Problemen mit C# und WPF. Aber dazu musst du uns zuerst helfen, damit wir dich verstehen. Eine Hilfestellung baut auf einer Zusammenarbeit auf. Wenn du nicht lernst oder nicht gewillt bist dich verständlicher auszudrücken, musst du einfach damit rechnen, dass man dir nicht helfen wird können.
hustbaer schrieb:
Dass Prof84 so schreibt dass ihn keiner versteht is ja jetzt nix neues
Ich hatte gehofft, dass das nur an den Themen in NadrW liegt. Mich beschleicht hiermit aber langsam das Gefühl, dass es ein allgemeines Problem ist.
warum ignorierst du ständig meinen hinweis auf ein protokoll? du hast eine falsche vorstellung davon was sockets sind.
du kannst auch jedesmal nur ein byte mit Receive in einen buffer schreiben und per schleife deine nachrichten zusammenbauen (nicht effizient aber ich will den punkt verdeutlichen).
nunja ich klinke mich mal aus hier. habe nun dreimal gesagt was wesentlich ist, der rest liegt bei dir.
Du kannst SQL Server Compact verwenden. SQLlite, etc.
Du kannst ein "echtes" RDBMS verwenden. MySQL, MSSQL, Oracle
Im Grunde egal.
Gröbster Unterschied. RDBMS ist für viele Client ausgelegt. Kann auch auf anderem Server liegen. u.v.m.
Links für C# und DB hast Du ja bereits.
Alles klar. An solch eine Datenmanager Klasse hatte ich auch schon gedacht, aber in meinem konkreten Fall geht es tatsächlich nur um die IP Adresse und um die ID, also eine "IPAddress" und um einen int. Da schätze ich eine eigene Klasse eher als Overkill ein, auch wenn damit schön Seperation on Concerns erfüllt würde. Diese Klasse würde nichts anderes machen, als das Event, welches vom Server getriggert wurde, weiterzutriggern und schließlich der GUI zu sagen, dass diese nun über siedie Daten vom Server holen kann.
Wären es mehr Daten oder müssten diese noch verarbeitet werden, dann würde ich deinen Plan sofort umsetzen.
Thx a lot