Laden...

Forenbeiträge von MrSparkle Ingesamt 5.658 Beiträge

06.11.2019 - 21:41 Uhr

Vielleicht solltest du erstmal in Ruhe eine Nacht darüber schlafen. Dann schau nochmal in die Doku zu den DependencyPropertys, und dann schau dir nochmal den Code an, den ich gepostet habe.

Deine Eigenschaft heißt Text und dein DependencyProperty MyProperty, das kann nicht funktionieren.

Und die Geometrie, die du erzeugst, gehört ins ViewModel. Genau wie Daten einer Liste ins ViewModel gehören und an die Liste in der View gebunden werden, gehören die Geometrie-Daten ins ViewModel und werden an den Viewport3d in der View gebunden.

Ich empfehle auch den Helix-Toolkit, der nimmt dir bei der 3D-Darstellung einiges an Arbeit ab.

06.11.2019 - 21:09 Uhr

Also solange du die Naming-Conventions für DependencyPropertys und die Hinweise auf die Doku, und sogar die Beispiele ignorierst, kann dir natürlich niemand weiterhelfen.

Bitte beachte [Hinweis] Wie poste ich richtig?

06.11.2019 - 19:01 Uhr

Weil ich nicht weiß was ich hier mache. Nur Raten.

Das sehen wir. Du versuchst Code zu copy & pasten, den du nicht verstehst, und bist dann frustriert, weil er nicht funktioniert. Deswegen schau dir doch bitte erstmal die Grundlagen von C# an, siehe den Link. Du kannst nicht erwarten, daß das alles von alleine funktioniert, oder irgendjemand den Code für dich schreibt.

Wenn man eine Sprache lernen will, dann fängt man ja auch nicht damit an, einen Roman zu schreiben, sondern beschäftigt sich erstmal mit der Grammatik und macht ein paar Übungen.

[FAQ] Wie finde ich den Einstieg in C#?
[Tipp] Schau in die Doku! - Möglichkeiten der Informationsgewinnung

05.11.2019 - 13:56 Uhr

Lies nochmal die Doku zu den DependencyPropertys. Es müßte so aussehen:


public class Bena : ModelVisual3D
    {

        public string Text { get; set; }

        public static readonly DependencyProperty TextProperty = DependencyProperty.Register("Text", typeof(string), typeof(Bena), new PropertyMetadata("leer")); 
    }

Davon abgesehen ist das, wie schon gesagt, der falsche Weg. Keine Ahnung, was du genau vor hast, aber ModelVisual3D verwendest du in der View, und bindest die Geometrie-Daten an die ModelVisual3D.Content-Eigenschaft. Siehe die Beispiele in der Doku: ModelVisual3D Class. Die Geometrie-Daten kannst du im ViewModel erzeugen und dann an die View binden.

Erzähl mal, was du eigentlich vor hast.

04.11.2019 - 18:03 Uhr

Ich würde vorschlagen, daß wir das Forum "GUI: WPF und Silverlight" mal bei Gelegenheit in "GUI: WPF" oder "GUI: WPF und XAML" umbenennen.

Silverlight benutzt doch eh keiner mehr und wird auch von den meisten Browsern schon länger nicht mehr unterstützt.

04.11.2019 - 17:54 Uhr

Ich habe heute stundenlang im I-Net nach beispielen gesucht
um mir was zusammen zu basteln.
Der Editor bleibt leer weil ich nicht weiß was, wie und wo ich etwas schreiben muss.

Hier gibt es ein paar Links für den Einstieg: [FAQ] Wie finde ich den Einstieg in C#?

04.11.2019 - 17:51 Uhr

Du mußt bei der DependencyProperty die Naming Conventions beachten, siehe Dependency properties overview:

The naming convention of the property and its backing DependencyProperty field is important. The name of the field is always the name of the property, with the suffix Property appended. For more information about this convention and the reasons for it, see Custom Dependency Properties.

Davon abgesehen ist dort der falsche Ort für die Logik der View. Die gehört ins ViewModel.

27.10.2019 - 15:04 Uhr

Die Hinweise auf Github etc. sind immer noch aktuell. Dort findest du ganze Projekte, nicht nur Codeschnipsel.

Wenn du jetzt allerdings nach 2 Monaten fragst, ob man den Code für ein ganzes Programm in eine einzige Datei schreiben soll, dann solltest du erstmal hier beginnen:

[FAQ] Wie finde ich den Einstieg in C#?
[Tipp] Schau in die Doku! - Möglichkeiten der Informationsgewinnung

Auch das kostenlose OpenBook vom Rheinwerk-Verlag ist für den Einstieg zu empfehlen: 🛈
Und auf Youtube gibt es auch jede Menge Tutorials aus den unterschiedlichsten Bereichen.

20.10.2019 - 20:01 Uhr

Hier gibt es eine Erklärung und einige Workarounds: Issue with SetForegroundWindow in .NET

07.10.2019 - 17:15 Uhr

Diese liegen einfach in einem von mit erstellten Verzeichnis und werden bei Bedarf in Projekte eingebunden.
Diese hatte ich im Projekt mal involviert, aber aus den Verweisen gelöscht, da ich das in diesem Projekt nicht mehr brauche.

Wir wissen nicht, wie du die DLLs "bei Bedarf" einbindest, und wie du das wieder entfernt hast, aber evtl. ist ein Post-Build-Ereignis stehengeblieben? Oder irgendwo wird der gesamte Ordner kopiert, so daß die Suche nach den einzelnen Dateien kein Ergebnis bringt?

Zur Not hilft [Tutorial] Vertrackte Fehler durch Vergleich von echtem Projekt mit minimalem Testprojekt finden

07.10.2019 - 16:43 Uhr

Damit dieses Thema nicht endlos ausufert, mache ich jetzt hier zu. Das hat alles nichts mehr mit einem Code-Rieview zu tun. Bitte beachte die Regeln für dieses Forum: Code-Review Regeln

Bei konkreten Fragen bitte im passenden Unterforum posten, und auch da bitte [Hinweis] Wie poste ich richtig? beachten, besonders 1.2 Nur ein Thema pro Thread.

07.10.2019 - 16:33 Uhr

Um was für DLLs handelt es sich denn? Aus eigenen Projekten, dem Framework oder aus einem Nuget-Package? Daß du keine Verweise im Projekt selbst hast, muß ja nichts heißen. Die von dir referenzierten Assembys haben auch Abhängigkeiten zu anderen Assemblys.

03.10.2019 - 17:34 Uhr

Diesen Teil mußt du auch beachten:

Fehlermeldung:
oder eine Abhängigkeit davon wurde nicht gefunden.

Der Hinweis von Th69 bezog sich auf MQL_CONN_V1. Es geht um deren Abhängigkeiten.

03.10.2019 - 16:14 Uhr

Ich habe mich bereits Videos und Tuts und weiteren Quellen bedient.

Bei solchen Fragen hilft immer ein Blick in die Doku, dazu ist sie da und spart jede Menge Zeit. Einfach den Cursor auf internal setzen, und F1 drücken. Siehe [Tipp] Schau in die Doku! - Möglichkeiten der Informationsgewinnung

03.10.2019 - 16:12 Uhr

Die Fehlermeldung ist doch ziemlich eindeutig:

Fehlermeldung:
System.IO.FileNotFoundException: Die Datei oder Assembly "MQL_CONN_V1, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" oder eine Abhängigkeit davon wurde nicht gefunden.

Die Datei muß im Anwendungsverzeichnis liegen oder im Global Assembly Cache liegen.

Ansonsten empfehle ich einen Blick in [Artikel] C#: Richtlinien für die Namensvergabe und in die Doku bezüglich dem ref-Schlüsselwort.

28.09.2019 - 19:33 Uhr

Zu MVVM gibt es hier diesen Artikel: [Artikel] MVVM und DataBinding. Das ist aber erst dann interessant, wenn die Daten auch geändert werden sollen. Solange sie nur angezeigt werden sollen, geht es auch so.

Nur ergibt die Ansicht keinen Sinn. Jeder Eintrag in deiner Liste hat ja mehrere Elemente, ChemieIDs etc.

Edit: Achso, ich glaube, jetzt verstehe ich es:


var analysen = context.ChemischeAnalysenDetails
   .Include(s => s.Chemie)
   .ToList();
28.09.2019 - 18:52 Uhr

Wenn ChemischeAnalysenDetails eine Liste ist, dann gibt es dort keine Eigenschaft Element.

Wenn ich es richtig verstehe, hat jeder Datensatz eine Liste von ChemischeAnalysenDetails, und du versuchst, diese in der gleichen Tabelle darzustellen. Wie soll denn das Ergebnis aussehen, das du erwartest?

27.09.2019 - 22:45 Uhr

Es gibt bereits ein Steuerelement für diesen Zweck: ProgressBar. Gerade als Anfänger muß man das Rad nicht neu erfinden 😃

Weiterhin gibt es hier einige nützliche Tips für den Einstieg: [FAQ] Wie finde ich den Einstieg in C#?

27.09.2019 - 18:22 Uhr

Die Exe liegt in einem Ordner zusammen mit vielen DLL-Dateien, die sie für die Ausführung benötigt.
Kopierst Du die Exe irgendwo anders hin und vergisst die anderen notwendigen Dateien ebenfalls zu kopieren, dann kann die Exe nicht richtig starten - bleibt weiß und stürzt eben ab.

26.09.2019 - 23:13 Uhr

Das Forum ist nicht dazu da, deinen Code zu debuggen. Du mußt nur die unbehandelten Ausnahmen abfangen, dann hast du die Ursache für das Problem.

25.09.2019 - 18:20 Uhr

Er ruft wohl die Dimension des Arrays ab.

Das sind alles Infos, die du in der Doku finden kannst. Du mußt unbedingt in die Doku reinschauen, wenn du nach etwas suchst. Dazu ist sie da. Und es geht auch viel schneller, als jedesmal im Forum nachzufragen.

Siehe dazu auch [Hinweis] Wie poste ich richtig?, Punkt 1.1 "Erst suchen und in die Doku schauen, dann posten", sowie [Tipp] Schau in die Doku! - Möglichkeiten der Informationsgewinnung

20.09.2019 - 18:27 Uhr

Die Vorgaben "von Oben" scheinen mir jetzt nicht besonders unsinnig zu sein. Die Umsetzung aber schon.

Lies dir doch erstmal die verlinkten Artikel (oder andere Artikel) durch. Du bist nicht der erste Entwickler, der ein Program mit Plugins (oder Add-Ons oder "Modulen") erstellen soll.

Wenn das ganze auf Interfaces basiert, dann kann man alles wunderbar mit OOP umsetzen, benötigt keine Reflection, keine Fensterhandles, hat gut lesbaren und weiterzuentwickelnden Code, und bekommt ordentliche Kompilermeldungen, wenn man irgendwo einen Fehler macht.

19.09.2019 - 20:04 Uhr

Ich entwickle ein modulares Programm als Forms Anwendung.

Dann solltest du dir als erstes mal Gedanken über die Software-Architektur machen. Warum ein Modul direkt auf ein Element des Fensters vom Hauptprogramm zugreifen muß, und dann Handles dafür benötigt werden und Reflection, erschließt sich mir überhaupt nicht.

Hier ein paar Links dazu:
[Artikel] Drei-Schichten-Architektur
[FAQ] Eigene Anwendung pluginfähig machen
[FAQ] Eigenen Event definieren / Information zu Events (Ereignis/Ereignisse)

16.09.2019 - 18:32 Uhr

Für genau diese Aufgabe gibt es in WPF Trigger. Siehe dazu [Artikel] MVVM und DataBinding, Abschnitt 4. "Styles und Trigger"

16.09.2019 - 18:28 Uhr

Ich schreibe momentan ein Peer 2 Peer Tool zum chatten und Dateien austauschen. Das Programm funktioniert auch soweit gut

Solange du nicht beschreibst, was du da machst, oder den relevanten Code hier postest, wirst du kaum eine hilfreiche Antwort erwarten können.

Niemand wird deinen Code für dich debuggen, dafür ist das Forum nicht da.

Bitte beachte [Hinweis] Wie poste ich richtig?, besonders Punkt 4.1 "Bitte keine kompletten Projekte posten". Die Links habe ich entfernt.

15.09.2019 - 20:09 Uhr

natürlich wär es aber ja zu schön gewesen wenn es dann auch so funktioniert wie es soll...

Softwareentwicklung ist doch kein Rätelraten oder Glücksspiel 😃

Du hast alle Werkzeuge zur Verfügung, um herauszufinden, was dein Code macht, bzw. nicht macht:
[Artikel] Debugger: Wie verwende ich den von Visual Studio?
[Artikel] Unit-Tests: Einführung in das Unit-Testing mit VisualStudio

14.09.2019 - 16:40 Uhr

Das PropertyChangedEvent wird nur für die Darstellung benötigt, und ist daher Teil des ViewModels, nicht des Models.

Die Commands sind Teil des ViewModels, daher sind dafür keine Helper-Klassen oder -Namespaces nötig.

Dort, wo du das RelayCommand erstellst, hast du doch Zugriff auf die Collection. Wenn nicht, verstehe ich deine Herangehensweise nicht. Wenn die Logik des Commands umfangreicher ist, dann kannst du anstatt des RelayCommands eine eigene Command-Klasse implementieren, der du die benötigte Collection im Konstruktor übergibst. Eine eigene "Logik-Klasse" ist auch da nicht erforderlich, dafür gibt es ja bereits die Commands. Siehe auch dazu diesen Artikel: [Artikel] MVVM und DataBinding

Bitte beachte zukünftig [Hinweis] Wie poste ich richtig?, besonders Punkt 1.2: Nur ein Thema pro Thread.

13.09.2019 - 12:39 Uhr

Was sind denn deine Anforderungen? Alles was du dazu in einem anderen Thread geschrieben hast, ist:

ich habe vor, ein kleines Spiel zu programmieren in C#, die Basis steht auch schon. Da die System.Net.Sockets Klasse für mich noch Neuland ist, habe ich eine Frage zur Koordination. Achso ich sollte eventuell erwähnen das die Verbindung schon steht und das ganze über TCP gehen muss, da keine Daten verloren gehen dürfen.

Das ist natürlich nicht viel Information. Im Code zeigst du, wie du einen Spielestatus senden und empfangen willst. Das ließe sich auch mit einer einfachen REST API umsetzen. Wenn du unbedingt Sockets benötigst, dann gibt es dafür auch fertige Bibliotheken. Als Faustregel würde ich sagen: Wenn du Daten unstrukturiert in einen Stream schreiben mußt, um sie per Netzwerk zu übertragen, dann setzt du mindestes eine Schicht zu weit unten an. Du siehst ja selbst, wie schnell man dabei einen Fehler macht, und wie schwierig es ist, das zu debuggen.

Das geht also sicherlich einfacher. Aber dann müßtest du mal erklären, was genau du vorhast, und was du bisher probiert hast. Siehe dazu auch unsere Tips in [Hinweis] Wie poste ich richtig?

12.09.2019 - 21:38 Uhr

localPlayers.Count ist sicherlich ein 32-Bit-Integer, nicht 16 Bit.

Ansonsten:

mach es dir nicht zu schwer. Es gibt bereits fertige Frameworks und Protokolle, die genau das bieten.
In der Regel ist es weder ratsam noch notwendig ein eigenes Protokoll zu entwickeln (Selbstschulung und Verständnis ausgenommen).

09.09.2019 - 12:30 Uhr

Die Anordnung der Dielen und der Verschnitt können ja prinzipiell völlig unabhängig von der Darstellung berechnet werden. Du hast ja die Größe der Terrasse und die Größe der Dielen. Wenn die Terrasse immer rechteckig ist, dann läßt sich das mit einem einfachen Dreisatz berechnen. Wenn die Terrasse beliebige Formen haben kann, ist es etwas komplizierter.

Und wenn du die Lage und Anzahl der Dielen berechnet hast, dann kannst du die, so wie in den verlinkten Artikel beschrieben, der Reihe nach zeichnen.

09.09.2019 - 12:24 Uhr

Ich habe ein MainWindow mit DockPanel für einen Frame und einer DependencyProperty, auf die in der StatusBar verwiesen wird.

Das klingt nach einer ungeeigneten Software-Architektur. Kennst du schon [Artikel] MVVM und DataBinding?

21.08.2019 - 19:45 Uhr

Ergänzend dazu sei gesagt, daß auch User ein ViewModel sein sollte und INotifyPropertyChanged implementieren muß, um die Änderungen anzuzeigen:

public ObservableCollection<UserViewModel> Users  { get; set; }

Steht aber alles auch in dem verlinkten Artikel zu MVVM.

11.08.2019 - 21:54 Uhr

Der Artikel zu MVVM und DataBinding wäre ein guter Einstieg. Es gibt dazu natürlich auch andere Artikel oder Videos im Netz, aber das würde die meisten deiner Fragen schonmal beantworten.

Über UserControls brauchst du erstmal nicht nachzudenken, du wirst schon merken, wenn du sowas brauchst.

11.08.2019 - 12:05 Uhr

wie kann ich auf den Text dieser Textbox zugreifen?

Genau dafür gibt es doch DataBinding. Ich empfehle, dir mal den Artikel dazu anzuschauen, denn dein Code ist alles andere als optimal. Hier noch ein paar Hinweise:

Du verwendest ein UserControl, wo ein einfaches DataTemplate ausreicht. UserControls sollten nur atomare Daten binden, d.h. bspw. keine Auflistungen von ViewModels. Siehe dazu z.B. DependencyProperties.

Deine Directive-Klasse wird als ViewModel verwendet, implementiert aber nicht das INotifyPropertyChanged-Interface

[Artikel] C#: Richtlinien für die Namensvergabe

[Artikel] MVVM und DataBinding

09.08.2019 - 21:51 Uhr

Also wenn du wirklich Hilfe hier suchst, dann solltest du auch alle Informationen mitgeben, die wichtig sind, um dir helfen zu können. Die Fehlermeldung gehört dazu.

[Hinweis] Wie poste ich richtig?

Ansonsten hast du einen Debugger, um die Fehlerursache zu finden:
[Artikel] Debugger: Wie verwende ich den von Visual Studio?
[Artikel] MVVM und DataBinding, Abschnitt Debugging

09.08.2019 - 21:48 Uhr

Du fügst nirgendwo einen Eintrag zur Liste hinzu. Dazu müßtest du die Add-Methode der List-Klasse aufrufen.

09.08.2019 - 13:39 Uhr

Wir können dir leider nicht helfen, wenn du keinen Code zeigst. Siehe dazu [Hinweis] Wie poste ich richtig?

09.08.2019 - 13:36 Uhr

Hier gibt es ein Beispiel dafür: [Artikel] MVVM und DataBinding, Strg-F "ItemTemplate"

01.08.2019 - 19:09 Uhr

Der erste Schritt ist immer, die Anforderungen zu definieren. Du schreibst zwar im Titel von einer Bildersuche, aber du erwähnst nirgendwo, nach was eigentlich gesucht werden soll.

Wenn du keine existierende APIs dafür verwenden willst ("extern Daten von z.B. google / bing"), dann mußt du dein neuronales Netzwerk o.ä. selbst trainieren. Dafür findest du Dokumentationen und Code-Beispiele der jedweiligen Bibliothek. Das müßtest du dir auch erstmal anschauen, das kann dir das Forum nicht abnehmen.

Eine Datenbank mit nur einem Bild pro Tierart reicht dafür aber bei weitem nicht aus.

01.08.2019 - 19:01 Uhr

Die Fehlermeldungen sind doch recht verständlich. Wenn es bereits den Eintrag gibt, den du hinzufügen willst, dann mußt du halt zuerst überprüfen ob es bereits Einträge gibt. Und bei der ArgumentOutOfRangeException mußt du schauen, woher der falsche Index kommt.

Ansonsten das, was Abt sagt.

28.07.2019 - 22:24 Uhr

Das Stichwort ist doch bereits in den vorherigen Antworten gegeben worden: Scope bzw. Gültigkeitsbereich von Variablen.

Der Rest ist Objektorientierte Programmierung. Masterkurse und Bücher zu WPF behandeln das sicherlich nicht, sondern setzen es voraus.

Fang lieber erstmal damit an, dir eine Objektstruktur zu überlegen, und wenn das grundsätzlich funktioniert, kannst du mit WPF loslegen. Scheint, als hättest du dich da ein wenig übernommen.

28.07.2019 - 22:15 Uhr

Wir können leider von hier aus nicht sehen, was für Daten hinter deinem Binding stecken, da fehlt der entscheidende Teil. Du könntest es per Debugger herausfinden ([Artikel] MVVM und DataBinding, Abschnitt Debugging), aber das wäre einfacher, wenn du MVVM verwenden würdest.

Ja, sowas sollte nicht im CodeBehind gemacht werden. Da aber plannedSchedule immer eine andere Anzahl aufweist, wusste ich mir nicht besser zu helfen.

Verstehe ich nicht. Du kannst doch deine ViewModels so organisieren, daß die Daten so zur Verfügung stehen, wie sie präsentiert werden sollen. Wenn du die Bindings nicht im XAML definieren kannst, hast du die ViewModels falsch strukturiert.

Du brauchst übrigens für die Umschaltung zwischen den beiden Ansichten nicht unbedingt zwei ControlTemplates zu definieren. Es gibt andere Möglichkeiten: die Umschaltung kann direkt in der ViewModel-Eigenschaft erfolgen, oder man blendet eine Anzeige per Visibility ein, und die andere aus ([Artikel] MVVM und DataBinding, Strg-F "BoolToVisibilityConverter")

23.07.2019 - 14:42 Uhr

gespeichert über Settings

weiss der Kuckuck was Windows da fehlerhaft geladen hat...

Evtl. liegt es an den Settings?
Nicht weil Windows die Config-Dateien für die falsche Version liest, sondern weil dort Werte drin stehen, die dein Programm durcheinander bringen können.

23.07.2019 - 01:31 Uhr

Google doch mal nach Suchbegriffen wie "how to recognize a sound in an audio stream". Dann merkst du schnell, daß es sich um ein relativ komplexes Problem handelt und es keine fertige Lösung dafür gibt.

Wenn du noch keine Erfahrungen mit Audio bzw. Signalverarbeitung hast, solltest du erstmal die Finger davon lassen. Fang lieber erstmal mit den Basics (wie Audioaufnahme) an, und schau dir mal Bibliotheken wie NAudio oder CSCore an.

23.07.2019 - 00:54 Uhr

Trotzdem lässt sich die Gui nicht öffnen, sondern bleibt minimiert in der Taskleiste.

Woran erkennst du das, bzw. wie genau "hängt" das Program? Kann es evtl. sein, daß das Fenster einfach auf einem anderen (evtl. ausgeschalteten) Bildschirm liegt? Oder außerhalb des aktuellen Bildschirmbereiches? Das würde das Verhalten jedenfalls erklären.

22.07.2019 - 23:14 Uhr

Ich denke, es reicht nicht aus, den Soundschnipsel im Audiobuffer zu finden, indem du den Byte für Byte vergleichst. Er wird je nach Spiel sicherlich etwas anders sein, mit mehr oder weniger Hall, vermischt mit Hintergrundmusik oder anderen Samples.

Hier mußt du eine gewisse Fehlertoleranz mit einbeziehen, z.B. eine Suche nach Ähnlichkeiten im Spektrum.

Oder du trainierst ein neuronales Netzwerk, ähnlich wie es auch bei OCR oder Spracherkennung funktioniert.

19.07.2019 - 18:20 Uhr

Gute Software kostet

Und dann gibt es Open Source. Jeder darf kostenlos mitarbeiten, und jeder darf es kostenlos nutzen. Funktioniert auch.

19.07.2019 - 18:18 Uhr

Deinen Code kann man auch sehr viel kürzer formulieren:


foreach (var item in dict.OrderByDescending(m => m.Value))
    this.ShowMessageOnPanel(string.Format("{0}: {1}", lookupDict[item.Key], item.Value));

Gib einfach mal einen kompletten Pfad an, dann weißt du auch, wo die Datei gespeichert wird. Ob und was dort reingeschrieben wird, kannst du mit dem Debugger überprüfen: [Artikel] Debugger: Wie verwende ich den von Visual Studio?