Verwende das [Tutorial] Konfigurationsmodell im .NET Framework
Du kannst in der Basisklasse kein XAML erstellen. Und du kannst - wie bereits gesagt - nicht bei jeder partial-Definition von einer anderen Klasse erben, die Fehlermeldung ist da auch ziemlich unzweideutig. Auch die Typangabe in der XAML gehört dazu.
Wozu willst du denn überhaupt ein Fenster vererben? So etwas braucht man unter WPF eigentlich nicht, man hat viel mehr Möglichkeiten mit Styles und Templates.
Siehe dazu [Artikel] MVVM und DataBinding
Das Projekt habe ich entfernt. Das Forum ist nicht dazu da, daß du hier einfach deinen gesamten Code postest, um ihn von jemand anderem debuggen zu lassen.
Bitte lies dir mal [Hinweis] Wie poste ich richtig? durch.
Wenn du ein Problem hast, dann kannst du das hier beschreiben, und den relevanten Code im Beitrag posten.
Fehler in deiner Software kannst du auch selbst mit dem Debugger oder automatischen Tests finden:
[Artikel] Debugger: Wie verwende ich den von Visual Studio?
[Artikel] Unit-Tests: Einführung in das Unit-Testing mit VisualStudio
Die einfachste Möglichkeit, etwas _parallel _auszuführen ist Parallel.ForEach: How to: Write a simple Parallel.ForEach loop
Ist das ein sinnvolles Konzept?
Du siehst doch selbst, daß es nicht funktioniert 😃
Daher, nein. Die ViewModels haben eine Funktion, und die Models haben eine andere Funktion, und der Sinn der Schichtentrennung ist es, diese beiden Verantwortlichkeiten voneinander zu entkoppeln. Verwende daher in der View die ViewModels, um die Daten anzuzeigen und zu bearbeiten, und die Models beim Datenzugriff, um sie zu laden und zu speichern.
Hier gibt es ausführlichere Infos dazu:
[Artikel] Drei-Schichten-Architektur
[Artikel] MVVM und DataBinding
Ist im Grunde ein ähnliches Problem wie UI Elemente dynamisch aus Remote XML erzeugen, nur halt CSV statt XML, und daß auch Daten wieder gespeichert werden sollen.
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.
Ich habe Probleme beim ModelView und alles so zu gestalten das die View das ModelView findet (Wonach sucht es? (Datacontext))
Siehe [Artikel] MVVM und DataBinding:
2.2 Instanziierung des ViewModels
Das ViewModel wird im Konstruktor der View instanziiert oder per Konstruktor-Parameter übergeben. Auch in XAML ist die Instanziierung möglich. Wichtig dabei ist, die
> der View auf die Instanz des ViewModels zu setzen:public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); this.DataContext = new MainViewModel(); } }
Oder alternativ mit Hilfe von XAML:
<Window.DataContext> <local:MainViewModel /> </Window.DataContext>
Daß man so etwas in einer Ausbildung lernt, darfst du einfach nicht erwarten. Es gibt ja noch wesentlich mehr Technologien als WPF, die allein aus Zeitgründen nicht so ausführlich behandelt werden können. Da mußt du ein wenig Eigeninitiative aufbringen, wenn du dich in eine bestimmte Technologie, die du für deine Arbeit brauchst, einarbeiten möchtest.
Die Antwort hat dir doch MarsStein schon im ersten Post gegeben. Und wenn das nicht verständlich ist, schau mal in den Artikel, der dir verlinkt wurde. Da gibt es Beispiel-Code und ein Beispiel-Projekt.
Wenn du mit "Klassen und anderen Gedöns" Datenbankabfragen meinst, dann haben die in der Benutzeroberfläche nichts zu suchen. Die Abfrage von Daten aus Datenbanken und die Definition von Farben in der UI haben nichts miteinander zu tun.
Ich habe manchmal den Eindruck das da was nachhängt beim Wechsel in ein anderes UserControl, habe aber nicht die Erfahrung dies in Erfahrung zu bringen.
Was genau meinst du damit?
Viele meiner Views sind nach dem gleichen Schema aufgebaut: Header, Content1, Content2.
Das trifft auf so ziemlich alle Anwendungen zu. Was bei dir so speziell ist, sagst du nicht. Dein vorgeschlagener Lösungsweg ist aber nicht nachvollziehbar. Wozu sollte man ViewModels, CustomControls oder "speziellen Syntax" verwenden, um ein einfaches Layout zu erstellen? Eventuell kennst du DataTemplates noch nicht? Siehe [Artikel] MVVM und DataBinding, Abschnitt 5
Die Lösung ist ganz einfach: Definiere alle deine Resourcen in XAML und verwende sie auch ausschließlich dort. Dann mußt du dich auch nicht um die Freigabe kümmern.
Gestern schriebst du, daß dein Wissen nicht ausreicht, um in der Doku nachzuschlagen, ob ein Konstruktur der Basisklasse automatisch aufgerufen wird. Heute willst du eine komplette Software neu schreiben, und nebenbei gleich noch eine neue Technologie erlernen.
Meine Empfehlung wäre: lieber erstmal etwas kleinere Brötchen zu backen.
Da wir aber weder die Struktur der Software noch deiner Firma kennen, können wir auch keine konkreten Tips geben. Außer evtl. erstmal kleinere Projekte starten, Funktionalität dorthin auslagern, Technologien evaluieren (es gibt nicht nur WinForms und WPF!), Vorgehensweise aus der Software-Entwicklung anwenden, Projekt-Management einführen, automatische Tests ausrollen etc., um von dem "Grundverständnis in Spaghetticode" und Einzelkämpfermodus wegzukommen.
Wenn ich das richtig verstanden habe, wird der Constructor der basis grundsätzlich immer mit aufgerufen, vor allen Dingen dann, wenn er parameterlos ist?
Richtig. Das sind aber sehr grundlegende Dinge, die man auch sehr schnell in der Doku nachschlagen kann. Daher habe ich den Beitrag ins Grundlagenforum verschoben.
[Tipp] Schau in die Doku! - Möglichkeiten der Informationsgewinnung
Ansonsten klingt dein Beitrag so, als willst du Windows Forms dazu verwenden, deine Anwendungs-Logik zu implementieren. Die Forms stellen aber nur die Benutzeroberfläche da, also die Ausgabe und die Eingabe von Daten. Der Rest hat dort nichts zu suchen. Dann werden sich auch alle genannten Probleme von allein lösen.
Siehe dazu u.a.: [Artikel] Drei-Schichten-Architektur
Was genau wird nicht dargestellt? Text, der nicht in die Spalte paßt?
Ansonsten würde man dafür kaum ein DataGrid verwenden, du siehst ja selbst, wie unübersichtlich das wird, wenn man alles selbst zeichnen muß. Windows Forms hat nämlich noch andere Steuerelemente, nicht nur das DGV 😃
Wenn man einen Screenshot ohne das aktuelle Fenster erstellen möchte, dann braucht man das aktuelle Fenster einfach nur ausblenden. Vor dem Screenshot Visibility auf Visibility.Hidden und hinterher auf Visibility.Visible setzen reicht.
Das Problem hier ist die Verwendung eines UserControls für die falschen Zwecke. Ein UserControl ist lediglich für die Darstellung bzw. die Eingabe eines Wertes da. Anwendungslogik, wie z.B. Screenshots zu erstellen, haben dort einfach nichts zu suchen. So etwas gehört in ein Command im ViewModel des Fensters.
Im besten Fall designt man die Benutzerschnittstelle so, daß gar keine Validierungsfehler auftreten können. Hier würde man ein Steuerelement verwenden, welches nur die Eingabe von Zahlen zuläßt.
Mit WPF geht das denkbar einfach, indem man im ViewModell eine Eigenschaft mit dem korrekten Datentyp (int
oder decimal
) erstellt:
private int someNumber;
public int SomeNumber
{
get { return someNumber; }
set
{
someNumber = value;
OnPropertyChanged(nameof(SomeNumber));
}
}
Und diese Eigenschaft dann an eine Textbox bindet:
<TextBox Text="{Binding SomeNumber}" />
Für mehr Komfort gibt es auch IntegerUpDown u.ä. Controls im Extended WPF Toolkit, mit dem man z.B. den Wertebereich begrenzen kann.
Fall trotzdem eine nachträgliche Validierung nötig sein sollte, siehe die Links von Wilfried.
Das Problem ist, das dass Array je nach Befehl OutofRange sein kann und um dann einen Fehler und somit Programmabbruch zu entgehen habe ich diesen Weg gewählt.
Das kannst du doch vorher überprüfen, in der Doku findest du alles Wissenswerte dazu:
Arrays (C#-Programmierhandbuch)
[Tipp] Schau in die Doku! - Möglichkeiten der Informationsgewinnung
Hier gibt es auch Tips für den Einstieg: [FAQ] Wie finde ich den Einstieg in C#?
Und formatiere doch bitte deinen Code, du bist jetzt schon zwei Mal darauf hingewiesen worden. [Hinweis] Wie poste ich richtig?, Punkt 6
Den Code habe ich entfernt. Du kannst hier nicht einfach seitenweise unformatierten Code posten, und dann erwarten, daß wir ihn für dich debuggen oder neuschreiben.
Bitte beachte [Hinweis] Wie poste ich richtig?, und poste die relevanten Code-Ausschnitte und verwende Code-Tags.
Lass das, das ist grober Unfug, den Du da versuchst.
Schon allein durch das Speichern von Anmelde-Informationen im Quelltext sollten alle Alarmzeichen angehen, unabhängig davon, ob die sonstige Vorgehensweise sinnvoll ist.
Siehe dazu auch die Doku von SecureString.
Im Code-Beispiel dort wird das Passwort durch den Benutzer eingegeben, und ist daher nirgendwo gespeichert. Ansonsten steht da noch in einem fetten Rahmen:
Important
We don't recommend that you use the SecureString class for new development.
Im dort verlinkten Artikel dann nochmal:
Don't use SecureString for new code. When porting code to .NET Core, consider that the contents of the array are not encrypted in memory.
The general approach of dealing with credentials is to avoid them and instead rely on other means to authenticate, such as certificates or Windows authentication.
mein Gedanke war...Habe ehrlich gedacht...dachte ich mir...und hoffe
Die erste Anlaufstelle ist immer die Doku, ob für Anfänger oder Profis: [Tipp] Schau in die Doku! - Möglichkeiten der Informationsgewinnung
Es gibt übrigens Förderprogramme für Selbständige und Freiberufler, hier exemplarisch von der Sächsischen Aufbaubank: Soforthilfe in der Coronakrise
Die Bedingungen sind:
*Jahresumsatz per 31. Dezember 2019 beträgt maximal 1 Mio. EUR
*Sitz oder Betriebsstätte befindet sich im Freistaat Sachsen und der Liquiditätsbedarf besteht für diese Einrichtungen
*Unternehmen war per 31. Dezember 2019 wirtschaftlich gesund
*Prognose für einen Umsatzrückgang beträgt mindestens 20 % für das laufende Geschäftsjahr aufgrund der Auswirkungen der Coronakrise
*Die Tätigkeit wird hauptberuflich ausgeübt
Hier gibt es ein Beispiel: [Artikel] MVVM und DataBinding, Abschnitt "5. Templates"
Das ist jetzt aber in XAML, wie es unter WPF üblich ist. Deine Begründung ergibt für mich keinen Sinn, denn XAML schließt überhaupt nicht aus, daß man die erstellten Elemente dynamisch erzeugen kann.
So wird dir jedenfalls kaum jemand weiterhelfen können. Da mußt du dir das XAML halt in C# übersetzen. Welchen Vorteil das allerdings haben soll, verstehe ich nicht.
Wenn man mit dem Programmieren beginnt, ist es hilfreich, wenn man sich vorher mal mit den Basics beschäftigt: [FAQ] Wie finde ich den Einstieg in C#?
Mit dem Debugger kannst du Schritt für Schritt durch dein Programm gehen, und dabei schauen, was genau passiert: [Artikel] Debugger: Wie verwende ich den von Visual Studio?
Bitte beachte zukünftig [Hinweis] Wie poste ich richtig? und poste bitte im richtigen Forum. Hier findest du die Regeln für das Code-Review-Forum: Code-Review Regeln
Ich hab mich nun dazu entschlossen, den Code komplett neu aufzusetzen, les mich vorher aber nochmal ordentlich ein.
Klingt vernünftig.
Da du mit WPF arbeitest, empfehle ich einen Blick in [Artikel] MVVM und DataBinding
Für allgemeine Infos zu Code-Strukturierung bzw. Software-Architektur gibt es den Artikel zur [Artikel] Drei-Schichten-Architektur
Auch der Umgang mit dem Debugger erleichtert die Entwicklung sehr: [Artikel] Debugger: Wie verwende ich den von Visual Studio?
Und für das Arbeiten mit Datenbanken empfehle ich die Verwendung von ORM wie z.B. den Entity Framework.
Es handelt sich um eine wpf-listbox, falls das von bedeutung ist.
Hier gibt es Beispiele-Code und ein Beispiel-Projekt: [Artikel] MVVM und DataBinding
Aber ich wühl nochmal a bisserl. Ich hatte gehofft, dass dieses Verhalten bekannt ist, weil die Vorgehensweise ja jetzt nciht sehr ausgefallen ist...
Jede Vorgehensweise, wo man vor dem Posten nach Code "wühlen" muß, ist...extrem ausgefallen.
Bitte beachte [Hinweis] Wie poste ich richtig?, besonders Punkt 5.
Und mit dem Debugger kannst du selbst durch deinen Code gehen und nachsehen, was dort passiert: [Artikel] Debugger: Wie verwende ich den von Visual Studio?
Sorry für den ein oder anderen falls ich mich nicht verständlich ausdrucken kann bin kein Profi in diesem gebiet mache es nur weils mir spaß macht.
Deine Text-Beiträge sind wirklich unverständlich. Lies dir doch wenigstens den Text nochmal durch, bevor du ihn postest. Das ist so konfus, wer soll dir da eine sinnvolle Antwort geben?
Und lies dir doch bitte auch mal die Antworten durch. Caveman hat dir doch eine fertige Lösung geliefert. Wenn es nicht funktioniert, dann poste die Fehlermeldung.
Siehe dazu auch [Artikel] MVVM und DataBinding, Abschnitt "Debugging".
Ich habe viele gleich aufgebaute Datenstrukturen, welche in Dictionaries verwaltet werden.
Ich sehe hier aber keine Datenstrukturen, sondern nur Dictionarys mit Magic Strings. Was spricht gegen Klassen mit Eigenschaften, bzw. OOP?
Aber kann mir evtl jemand direkt helfende Unterstützung geben?
Wo genau brauchst du denn Unterstützung? Daß du einfach hier deinen Code postest, und dann darauf wartest, daß ihn jemand für dich debuggt oder umschreibt, so funktioniert ein Forum nicht.
Daher auch _nochmals _der Hinweis auf [Hinweis] Wie poste ich richtig?: 5. Problem genau beschreiben - inkl. genauer Fehlermeldung - und konkrete Fragen stellen
Mit einem parameterlosem Konstruktor würde es allerdings funktionieren. Dann mußt du die Daten aber anders übergeben.
public Vater Methode<T>(string[] rows) where T: Vater, new()
{
var result = new T();
result.SetData(rows);
return result;
}
So, ich habe mich jetzt erstmal von SQL verabschiedet, da ich keinen eigenen Server habe bzw. da ich dies hier hobbymäßig mache möchte ich auch keine Abo Kosten von Anbietern haben.
Datenbanken verursachen keine Kosten, außer du läßt sie irgendwo hosten oder verwendest lizenzpflichtige Systeme wie Oracle.
Wie bekomme ich jetzt die Daten von Fenster 2 in das DataGrid von Fenster 1?
Am einfachsten geht das, wenn man MVVM benutzt. Dann kann man fensterübergreifend auf das gleiche ViewModel zugreifen, und die Daten anzeigen bzw. bearbeiten.
Siehe dazu [Artikel] MVVM und DataBinding
Bitte beachte zukünftig [Hinweis] Wie poste ich richtig?, besonders:
1.2 Nur ein Thema pro Thread
2.1 Im richtigen Forum posten
6. Code-Tags und Anhänge verwenden
Die Lizenzbedingungen sind doch eindeutig:
Trial license keys allow for 30 days of live environment evaluation testing only.
Siehe die Antwort in How to compute the integer absolute value
Wo genau liegt jetzt dein Problem? Was hast du probiert, was funktioniert dabei nicht?
Bitte beachte [Hinweis] Wie poste ich richtig?, besonders Punkt 5.
Gängige Praxis für *.xlsx ist die Verwendung von Interop.Excel.
Interop setzt eine Installation von Excel voraus, daher ist Open XML inzwischen die "gängige Praxis". Keine Ahnung, was du mit "leere Zellen handeln" meinst.
Zu den DataTemplates gibt es auch hier einige Beispiele: [Artikel] MVVM und DataBinding
Du kannst dein Programm debuggen, dann siehst du, welcher Pfad verwendet wird.
suche ich ja NUR einen tollen Algorithmus...So like eine Funktion...natürlich so "Highspeed" wie möglich..."zu Fuss" erledigen...ABER...in HighSpeed
Magst du evtl. nochmal kurz durchatmen, und uns dann ganz in Ruhe erklären, was genau du vor hast, und was dabei nicht funktioniert?
Update: 43.000 Hackathon-Teilnehmer bringen Slack ans Limit
Hier ein paar Beispiele für die eingebrachten Ideen:
"Wie kommunizieren wir den Status von Supermärkten?", "Wie können wir die Kapazitäten im Krankenhaus besser darstellen?", "Wie können wir über Helfer-Plattformen Nachbarschaftshilfe organisieren?" oder "Wie können ArbeiterInnen (bes. für die Ernte) besser verteilt werden?"
Nur zur Erinnerung: Es geht hier um eine Ankündigung eines kleinen Wettbewerbes, der im besten Fall ein paar Leute davon abhalten kann, sich zu Hause zu langweilen.
Wenn die Aktion im Allgemeinen oder der Gebrauch von Gender-Auszeichnungen im Speziellen euch emotional aufwühlt, wendet euch doch bitte an den Veranstalter.
Hier gibt es ein Beispiel: ItemsControl.ItemsPanel Property
Im Codebehind dann die ItemSource zugewiesen.
Das ist keine gute Idee. Verwende lieber MVVM: [Artikel] MVVM und DataBinding
Man würde es aber eher so machen, denn man möchte ja auch wieder auf den vom Benutzer eingestellten Wert zurückgreifen können:
<DatePicker SelectedDate="{Binding SelectedDate}"/>
Und im ViewModel:
public class MyViewModel : BaseViewModel
{
private DateTime selectedDate = DateTime.Now;
public DateTime SelectedDate
{
get { return selectedDate; }
set
{
selectedDate = value;
NotifyOfPropertyChange();
}
}
}
Damit ist das aktuelle Datum voreingestellt, und die aktuelle Auswahl ist immer über die SelectedDate-Eigenschaft im ViewModel zugreifbar.
Siehe dazu auch: [Artikel] MVVM und DataBinding
Allerdings finde ich, nachdem C# lange Zeit wirklich kürzer UND verständnlicher wurde, wird es seit einiger Zeit nur noch kürzer.
Das liegt aber nicht an C#. Man kann sich in jeder Sprache unverständlich ausdrücken, wenn man sich nur genug Mühe gibt.
Die Derivate-Partial Funktion aus der Bibliothek erwartet als Funktion eine F# Funktion weshalb ich die Eingangs erwähnte Funktion als F-Sharp umsetzten und dort aufrufen muss, nur weiß ich nicht wie man die 2 Projekte verbindet geschweige ob ein Verweis auf das F-Sharp-projekt reicht ... (Konnte ich das File1 nicht finden deshalb wende ich mich ja an euch)
Es würde wirklich helfen, wenn du dir mal die Grundlagen von C# aneignest, und dir ein wenig mehr Mühe beim Verfassen deiner Beiträge geben würdest. Es ist kaum zu lesen, was du da schreibst. Und poste doch die wesentlichen Informationen gleich im ersten Beitrag. Dein Problem hier hat nichts mit Quantenphysik oder Differentialgleichungen zu tun, sondern kann mit einem Blick in die Doku deiner Bibliothek gelöst werden.
[FAQ] Wie finde ich den Einstieg in C#?
[Tipp] Schau in die Doku! - Möglichkeiten der Informationsgewinnung
Und bitte lies dir mal [Hinweis] Wie poste ich richtig? durch, da gibt es einige Tips, wie man eine Frage im Forum formuliert, damit einem auch schnell geholfen werden kann. Crossposts werden hier aber nicht geduldet (Punkt 2.2), daher ist der Beitrag jetzt geschlossen.
Help with implementation from TAlex.MathCore library with the derivation Function?
Die Antwort dort ist allerdings schon lesenswert:
if you've written over 5000+ line of code, but you are stumped by how to write a function or if statement, something is really wrong. Was the wave function previously collapsing into "I-know-how-to-write-code" state, but now the wave function is collapsing down to "I-don't-know-how-to-write-code"? Must be Schroedinger's Code Monkey...
So müßte es funktionieren:
<TextBlock Width="50" Text="{Binding}" />
Binde den TextBlock halt nicht an die Collection sondern an die Eigenschaft mit dem Text. Hier gibt es Beispiele: [Artikel] MVVM und DataBinding, Strg-F "DataTemplate"
Man könnte aber beim Programmstart Daten (bzw. Dateien mit Daten) als Befehlszeilen-Argumente übergeben.
Ansonsten ist nicht klar, was genau du vor hast, und was du mit "online setzen und testen" meinst. Mit einer Server-Anwendung kannst du kommunizieren, und z.B. JSON- oder XML-Daten senden bzw. empfangen, auch über eine Shell.
Und warum überhaupt Python?
Siehe dazu auch Wie mit ComboBoxen DataGrid filtern?, da gibt es Code-Beispiele
Das hier mußt du erklären:
Nun soll im ModelFavorite die Property "LinkTarget" mit dem Link der Technologie verbunden werden.
Stell dir vor, du hast keine Ahnung, was ein LinkTarget auf eine Technologie bedeutet, bzw. wie das auf welche Art "verbunden" werden soll. Wenn du das Problem nicht so erklärst, daß man es als Außenstehender versteht, dann kann dir auch keiner im Forum helfen.
Zeige uns dein Datenmodell, und den Code, den du bisher hast. Und dann beschreibe, welche Probleme du bei der Umsetzung hast.