Laden...

Forenbeiträge von AndyRandy691 Ingesamt 6 Beiträge

28.10.2016 - 08:54 Uhr

Es wird auf jedenfall kein Server zur Verfügung stehen, auf dem die Datenbank laufen kann. Daher entstand wohl die Idee die Daten in einer Datenbankdatei zu speichern und diese Dann unter den 5 Leuten die es betrifft zu teilen. Ich weiß, es klingt grausem in Sachen Redundanz aber einen besseren Gegenvorschlag konnte ich nicht machen.

28.10.2016 - 08:27 Uhr

Das klingt vernünftig nach allem was ich bis jetzt weiß. Die Datenbankdatei ist jedoch Vorgabe...

27.10.2016 - 16:10 Uhr

verwendetes Datenbanksystem: Microsoft SQL Server Datenbankdatei

Hallo zusammen,

ich hänge an einem Problem. Ich soll für ein Projekt mit Hilfe von Visual Studio und C# eine kleines Programm schreiben. In dem Projekt geht es im Wesentlichen darum verschiedene Daten aus vielen XML-Dateien einzulesen und zusammenzuführen. Eingelesen sind die Daten alle und werden zur schnellen Weiterverarbeitung und Anzeige in der GUI in List<> Objekten gespeichert. Beim schließen des Programms sollen diese Daten dann in eine Datenbankdatei übernommen werden. Da ich zuvor nicht viel mit Datenbanken zu tun hatte, habe ich mir dazu einige Videos angesehen und bin dort immer wieder auf ein Vorgehen gestoßen, was ich auf mein Projekt übertragen habe:

  1. Erstellen einer Datenverbindung erstellen (Datenquellen -> Neue Datenquelle hinzufügen -> Datenbank -> DataSet -> Neue Verbindung -> Microsoft SQL Server-Datenbankdatei (SqlClient) ausgewählt und Name 'Test.mdf' vergeben und ins Projektverzeichnis kopiert -> ConnectionString in der Anwendungskonfigurationsdatei gespeichert -> DataSet erstellt)

  2. Tabellen zur Datenbank hinzugefügt (Server-Explorer -> Datenverbindungen -> Test.mdf -> Tabellen und alle gewünschte hinzufügen)

  3. Fertige Tabellen aus der Datenbank im Datasetdesigner (Datenquellen -> rechtsklick Test.mdf) und alle Tabellen per Drag&Drop hinzugefügt, alles aktualisiert

Durch dieses Vorgehen werden offenbar sämtliche Adapter und das DataSet TestDataSet automatisch generiert. Wie kann ich nun meine List<> mit kleinen Veränderungen in das DataSet laden und dann damit die Datenbank updaten?

Viele Dank für eure Hilfe

Gruß Andy

23.09.2016 - 14:42 Uhr

So, nachdem ich mich jetzt ziemlich ausführlich mit dem MVVM Pattern beschäftigt habe und mein restliches Programm damit vorangetrieben habe, bin ich wieder bei meiner Circle Map angelangt. Ich glaube ich kann jetzt zumindest nachvollziehen was ihr meint.

@ErfinderDesRades
Wenn ich die RotateTransform Eigenschaft binde, dreht sich dann nicht einfach das Kart-Objekt mit der Tangente des Paths??

Ich versuche gerad zunächst mal ein Auto losgelöst von sämtlichen Daten auf meinen Pfaden fahren zu lassen. Meine Idee dazu ist dies mit einer Pathanimation durchzuführen. Das scheint anders als bei den Vorschlägen bislang zu sein. Ich wollte die Animation mit einem Button starten. Damit alle Objekte im Viewmodel bekannt sind, muss ich die Pfade und den Punkt für das Auto im Viewmodel per Code erstellen. Wie kann ich diese Objekte jetzt in der View anzeigen lassen?
DataContext der View ist auf mein Viewmodel gesetzt, aber ich vermute man muss die Geometrien noch irgendwie dem Canvas hinzufügen.

Vielleicht tappe ich mit der Animation aber auch im Dunkeln.

Einen Winkel im ViewModel berechnen dürfte ja nicht das Problem sein. Nur wie genau kann ich den für die Position auf dem Pfad dann verwenden?

18.08.2016 - 18:35 Uhr

Das ging schnell. Danke für die Antworten. Ich hab befürchtet, dass mir noch einiges an Wissen fehlt. Ich werde mir dann jetzt MVVM zu Gemüte führen 😉

18.08.2016 - 17:14 Uhr

Hallo zusammen,

ich bin zur Zeit damit beschäftigt ein Programm für kleine Kartrennen zu entwickeln. Dieses soll in der Lage sein die Zwischenzeiten, Rundenzeiten etc. aus einem XML-Stream zu erfassen und weiterzuverarbeiten. Die Erfassung funktioniert soweit schon ganz gut. Neben der Darstellung der Daten in einem DataGrid soll auch eine s.g. CircleMap enthalten sein. Diese ist so gedacht, dass jedes fahrende Kart hier als Punkt auf einem Kreis umläuft und eine Runde des Karts auf der Strecke eine Runde des jeweiligen Punktes auf dem Kreis entsprechen soll.
Da in diesem Fall dynamisch gezeichnet werden muss, entschied ich mich mein kleines Programm fortan nicht mehr als Windows Form, sondern als WPF Application zu entwickeln.

Leider bin ich was WPF angeht ein totaler Neuling. Deshalb habe ich mich mit Hilfe von video2brain, openbooks und dem Rest des Netzes versucht in die Thematik einzuarbeiten. Dabei stieß ich auf die open-source library Modern UI for WPF, welche ich gerne für mein Programm benutzen möchte.

Die XAML des MainWindow sieht folgender maßen aus:


<mui:ModernWindow x:Name="Main" x:Class="TimingToolWPF.MainWindow"
                  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                  xmlns:mui="http://firstfloorsoftware.com/ModernUI"
                  xmlns:sys="clr-namespace:System;assembly=mscorlib"
                  Title="ROWE Timing Tool" 
                  Height="900" Width="1600"
                  WindowState="Maximized"
                  ContentSource="Pages/Timing.xaml"
                  Padding="10,0,10,0">

        <mui:ModernWindow.MenuLinkGroups>
            <mui:LinkGroup DisplayName="Timing">
                <mui:LinkGroup.Links>
                    <mui:Link DisplayName="Timing Grid" Source="Pages/Timing.xaml"/>
                </mui:LinkGroup.Links>
            </mui:LinkGroup>

            <mui:LinkGroup DisplayName="Strategy">
                <mui:LinkGroup.Links>
                    <mui:Link DisplayName="Circle Map" Source="Pages/CircleMap.xaml"/>
                </mui:LinkGroup.Links>
            </mui:LinkGroup>
        </mui:ModernWindow.MenuLinkGroups>

</mui:ModernWindow>

Auf der Page Timing.xaml befindet sich ein Button, der per Click einen Timer startet, der die XML-Dateien des Streams überprüft um immer die aktuellsten Daten aus dem Stream zu laden In der Code-behind Datei Timing.xaml.cs werden dazu Listen erzeugt und erweitert.


namespace TimingToolWPF
{
    /// <summary>
    /// Interaction logic for Timing.xaml
    /// </summary>
    public partial class Timing : UserControl
    {
        public string xmlFilePath { get; set; }
        public string xmlFolderPath { get; set; }
        public string Track { get; set; }
        public string Meeting { get; set; }
        public string Competition { get; set; }
        private string extractPath;
        private string sroFileName = "TEAM_INFO.TMP";
        private int fileCount = 0;
        public bool bgwIsWorking = false;
        public string Session { get; set; }
        public List<Car> lstCars = new List<Car>();
        public List<Message> lstMessages = new List<Message>();
        public List<Flag> lstFlags = new List<Flag>();
        private List<string> fileNames;
        public List<TimingList> lstTiming { get; set; }
        public DispatcherTimer tmrXmlRefresh;
        public BackgroundWorker bgwDataImport;
        public System.Windows.Forms.FolderBrowserDialog fbdOpenXmls;

        public Timing()
        {...

Jetzt benötige ich diese Listen aber auch in der Page CircleMap.xaml. Hier liegt schon mein erstes Problem. Wie kann die CircleMap auf die Objekte aus Timing.xaml zugreifen? Oder wie kann ich die Objekte anders anlegen, sodass jede Page Zugriff auf sie hat?
Im Internet finde ich oft, dass man die Objekte bei der Navigation übergeben muss. Leider denke ich befindet sich die Navigation von einem ModernWindow nicht da wo sie sonst ist. Zumindest finde ich die Stelle nicht. Und selbst wenn, was mache ich dann wenn die Daten sich im Hintergrund aktualisieren? Etwas in der Art von "anwendugsweiten Objekten" wäre sehr hilfreich.

Das zweite Problem ist die generelle Umsetzung der CircleMap. Von den Windows Forms her weiß ich, dass ich Formen aus dem Code zeichnen kann. Unter WPF gibt es nun auch die Möglichkeit von Animationen. Daher war zunächst meine Idee, das ganze als eine Pfadanimation umzusetzen - den Kreis als Pfad, kleine Kreise für die Karts als Target. Für die Duration der Animation würde ich die Rundenzeit der letzten Runde nehmen. Ich scheitere jedoch schon daran eine einfache Ellipse als Animationspfad zu benutzen, geschweige denn, dass ich unterschiedlich viele Karts in unterschiedlichen Geschwindigkeiten darauf laufen lassen kann. Daher die Frage, ob mein Ansatz mit der Animation überhaupt Zielführend ist oder ob es nur über das eigenständige Zeichnen von Formen über die Code-behind Datei funktioniert?

Ich weiß das war jetzt viel. Aber ich bin gerade wirklich verzweifelt und muss das Chaos in meinem Kopf erst ordnen. Vielen Dank schonmal für eure Mühen.

LG Andy