Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Portal
  • |
  • Mitglieder
Beiträge von Kriz
Thema: Aufbaue einer Datenbankabfrage mit variablen Filtern
Am im Forum: Datentechnologien

Top, danke Dir!

Thema: Aufbaue einer Datenbankabfrage mit variablen Filtern
Am im Forum: Datentechnologien

Hallo Gü,

ich greife direkt auf die DB mittels SQLClient zu.

Also wäre die beste Möglichkeit dann anhand der gesendeten Filter das Statement "händisch" zu erstellen und auszuführen?

Thema: Aufbaue einer Datenbankabfrage mit variablen Filtern
Am im Forum: Datentechnologien

Verwendetes Datenbanksystem: <SQL>

Hallo zusammen, folgende Situation:
Es sollen Abfragen an eine Web-Rest-API gesendet werden, mit verschiedenen möglichen Filtern. Die Filter können sehr variable gestaltet sein, es können drei int - Arrays mit je sechs Werten sein, oder aber auch nur ein string-Wert.
Die API wurde in C# entwickelt, steht schon in den Grundzügen und greift auf eine MSQL Datenbank zu.
Gibt es eine Möglichkeit eine SQL Abfrage so dynamisch zu gestalten, dass jeder mögliche "Filter-Fall" abgedeckt wird, oder muss ich die Abfragen mittels if-then händisch als SELECT Statement schreiben?
Aktuelle gibt es folgende Filter, die können aber jederzeit variieren:
string Wert1 (kann auch null sein)
int[] Wert2 (0 - 30) (kann auch null sein)
int[] Wert3 (0 - 30) (kann auch null sein)
int[] Wert4 (0 - 30) (kann auch null sein)

Ich hoffe ich konnte mich verständlich ausdrücken
Danke schonmal!

Kriz

Thema: API Oder direkte SQL Abfrage
Am im Forum: Datentechnologien

Hallo zusammen,

ich hoffe ich bin in diesem Unterforum richtig.

Es soll eine mobile App entwickelt werden, verschiedenste Daten sollen von einem Server abgerufen werden.
Mein erster Gedanke war einfach direkte SQL Anfragen an den Server zu schicken. Es bestände aber auch die Möglichkeit eine Rest-WebAPI zu entwickeln. Das habe ich zwar noch nie gemacht, aber man lernt ja nie aus.
Würde das Sinn machen und wenn ja, warum? Die Daten sind nur für mich bzw nur für die App gedacht, also keine weiteren Zugriffe, außer von dieser App.

Ich hoffe, ich konnte mich verständlich ausdrücken.

Vielen Dank schonmal!
Kriz

Thema: Events feuern nicht auf jedem PC
Am im Forum: Grundlagen von C#

@FZelle
Also die UI wird an ein ViewModel gebunden und dieses instanziert die Klasse MP3Import
In einem Task wird dann die Funktion Import der Klasse MP3Import aufgerufen.

@TH69
das ist WPF
Die Methode SaveMP3ToDatabase wird nicht im UI Thread aufgerufen, habe aber auch keine Exception unterdrückt.

Wie gesagt, sowohl bei mir auf dem Rechner, als auch auf einem zweiten Rechner funktioniert alles einwandfrei, nur eben auf dem Kunden PC nicht.

Thema: Events feuern nicht auf jedem PC
Am im Forum: Grundlagen von C#

Guten morgen zusammen,

folgende Situation:
Ich habe eine kleine Jukebox entwickelt. Der User gibt in einem Import-Fenster die Location der MP3 Files an und die Jukebox speichert Titel, Interpret, Album und Pfad zur MP3 in einer internen Datenbank.
Nach jedem "importiertem" File wird ein Event gefeuert um den User anzuzeigen wie der Fortschritt ist:

Event:

public static event EventHandler<string> onSongAdded;
protected virtual void OnSongAddedRais(string e)
        {
            EventHandler<string> raiseEvent = onSongAdded;
            if (raiseEvent != null)
            {
                raiseEvent(this, e);
            }
        }

Und hier wird es ausgelöst:

private void SaveMP3ToDatabase(string path)
        {
            var tfile = TagLib.File.Create(path);
            
            Song song = new Song()
            {
                Title = tfile.Tag.Title,
                Interpret = GetInterpretOrCreateNew(tfile.Tag.Performers[0]),
                Album = GetAlbumOrCreateNew(tfile, path),
                Location = path,
                Duration = tfile.Properties.Duration
            };
            song.Album.Tracklist.Add(song);
            CurrentImportedSong = song;
            CheckAndSaveSongs(song);
            db.Albums.AddOrUpdate(song.Album);
            db.SaveChanges();
            OnSongAddedRais($"{song.Interpret.Name} - {song.Title}");
        }

Und hier wird es abboniert:

ImportMP3.onSongAdded += AssignTitle;

Mein Problem ist nun folgendes:
Auf meinem Entwickler PC und auf einem zweiten PC, den ich zuhause habe, funktioniert das feuern der Events ohne Probleme, die UI zeigt immer den aktuell importierten Titel an. Und alle Titel werden korrekt importiert.
Auf dem Kunden PC werden die Events anscheinend aber nicht ausgelöst. An der UI tut sich nichts, aber der Import erfolgt.
Kurioserweise tritt das Problem nur an dieser Stelle auf, denn an vielen anderen Stellen in der Software arbeite ich erfolgreich mit Events, nur hier wollen sie nicht, wie sie sollen.
Woran kann das liegen?

Vielen Dank im Vorraus!
Kriz

Thema: Wie serialisiere ich ein JSon Dictionary mit Objekten?
Am im Forum: Datentechnologien

So einen ähnlichen Ansatz hatte ich auch schon und bekam folgenden Fehler:

Fehler
Newtonsoft.Json.JsonSerializationException: "Cannot deserialize the current JSON array (e.g. [1,2,3]) into type 'System.Collections.Generic.Dictionary`2[System.String,JSON.Test]' because the type requires a JSON object (e.g. {"name":"value"}) to deserialize correctly.
To fix this error either change the JSON to a JSON object (e.g. {"name":"value"}) or change the deserialized type to an array or a type that implements a collection interface (e.g. ICollection, IList) like List<T> that can be deserialized from a JSON array. JsonArrayAttribute can also be added to the type to force it to deserialize from a JSON array.
Path '', line 1, position 1."

Thema: Wie serialisiere ich ein JSon Dictionary mit Objekten?
Am im Forum: Datentechnologien

verwendetes Datenbanksystem: <JSON/CSV>

Guten Morgen zusammen!
Ich spiele gerade etwas mit Firebase rum und versuche gerade eine von Firebase erstellte JSON Datei in CSV zu konvertieren. Allerdings hat die JSON Datei ein recht ungewöhnliches Format und ich beiße mir daran die Zähne aus:

{  
  "-MQJvfjVAiEiMCYmIVB3" : {
    "CorrectAnswers" : 9,
    "GiveTime" : false,
    "ID" : 10,
    "ItemsPerSecond" : 0.224,
    "JustNewPLUs" : false,
    "ListID" : 0,
    "MaxPLU" : 2002,
    "MinPLU" : 57,
    "PLUListeID" : "PLUsToLearn",
    "Passed" : false,
    "Percent" : 45.0,
    "Points" : 40,
    "Querys" : 20,
    "TimeInSeconds" : 89,
    "TimeOfTesting" : "2021.01.06 - 00:41",
    "Timekeeping" : false,
    "doTimekeeping" : false
  },
  "-MQJw7XYVf0QgmlY4kjT" : {
    "CorrectAnswers" : 10,
    "GiveTime" : false,
    "ID" : 11,
    "ItemsPerSecond" : 0.229,
    "JustNewPLUs" : false,
    "ListID" : 0,
    "MaxPLU" : 2399,
    "MinPLU" : 1,
    "PLUListeID" : "049.005.003",
    "Passed" : false,
    "Percent" : 50.0,
    "Points" : 114,
    "Querys" : 20,
    "TimeInSeconds" : 87,
    "TimeOfTesting" : "2021.01.06 - 00:43",
    "Timekeeping" : false,
    "doTimekeeping" : false
  },
  "-MQJwUSCG9BvNjif3R4_" : {
    "CorrectAnswers" : 10,
    "GiveTime" : false,
    "ID" : 12,
    "ItemsPerSecond" : 0.27,
    "JustNewPLUs" : false,
    "ListID" : 0,
    "MaxPLU" : 2399,
    "MinPLU" : 291,
    "PLUListeID" : "049.005.003",
    "Passed" : false,
    "Percent" : 50.0,
    "Points" : 94,
    "Querys" : 20,
    "TimeInSeconds" : 74,
    "TimeOfTesting" : "2021.01.06 - 00:45",
    "Timekeeping" : false,
    "doTimekeeping" : false
  }
}

Der Hashcode beispielsweise "MQJw7XYVf0QgmlY4kjT" wird von Firebase erstellt und ist für mich nicht relevant.
Die Objekte, die erstellt werden sollen, sind vom Typ "Test":

public class Test
    {        
        public int CorrectAnswers { get; set; }
        public bool GiveTime { get; set; }
        public int ID { get; set; }
        public double ItemsPerSecond { get; set; }
        public bool JustNewPLUs { get; set; }
        public string ListID { get; set; }
        public int MaxPLU { get; set; }
        public int MinPLU { get; set; }
        public string PLUListID { get; set; }
        public bool Passed { get; set; }
        public double Percent { get; set; }
        public int Points { get; set; }
        public int Querys { get; set; }
        public int TimeInSeconds { get; set; }
        public DateTime TimeOfTesting { get; set; }
        public bool Tiomekeeping { get; set; }
        public bool doTimekeeping { get; set; }
    }

ich habe schon verschiedene Ansätze ausprobiert, beispielseise Helfererklassen erstellt:

public class RootObject
    {
       public List<Helper> PoolData { get; set; }
    }

public class Helper
    {
        public string ID { get; set; }
        public Test _Test { get; set; }
    }     

aber nichts führt zu Erfolg, entweder Fehlermeldungen, oder ein leeres RootObject.

Mit folgendem Code lese ich das File ein:

string json = System.IO.File.ReadAllText(@"C:/Projects/file.json");
var tmp = JsonConvert.DeserializeObject<RootObject>(json);

Vielleicht kann mir ja jemand auf die Sprünge helfen.

Vielen Dank schonmal!

Thema: Wie an den Konstruktor eines ViewModels einen Parameter übergeben, ohne CodeBehind File zu nutzen?
Am im Forum: GUI: WPF und XAML

Guten Morgen!

Gibt es eine Möglichkeit an den Konstruktor eines ViewModels einen Parameter zu übergeben, ohne das CodeBehind File zu nutzen?

Also im Moment mache ich es so:

public Settings()
        {
            InitializeComponent();
            BindingContext = new ViewModel(Parameter);
        }

würde das ganze aber gerne irgendwie in XAML umsetzen.

Vielen Dank schonmal!
Chris

Thema: Wie kann ich kontrollieren, ob gerade eine MP3-Datei im MediaPlayer läuft?
Am im Forum: Grafik und Sound

Guten Morgen,

Ich tue mich etwas schwer mit meinem Mediaplayer...
Ich möchte kontrollieren, ob gerade ein MP3 läuft, wenn nicht, soll eins gestartet werden. Die Kontrolle, ob etwas läuft, soll ununterbrochen stattfinden, also in eine while-Schleife gepackt.
Um meinen Main Thread nicht zu blockieren, starte ich dies in einem separaten Thread, dann startet aber die Musik nicht. Erst wenn ich einen Breakpoint setze geht es los.

Aufruf aus meinem Mainthread:

Task.Run(() => StartPlayer());

Mein Player:

private Task StartPlayer()
        {
            mediaPlayer = new MediaPlayer();
            while (true)                
            {
                if (mediaPlayer.Position ≤ new TimeSpan(0,0,0))
                {
                    if (Playlist.Count > 0)
                    {
                        
                        mediaPlayer.Close();
                        mediaPlayer.Open(new Uri(Playlist[0].Location));
                        mediaPlayer.Play();
                        CurrentTitle = Playlist[0];
                    }
                }
            
            };
        }

Thema: SQL Error wenn ViewModel im XAML gesetzt wird
Am im Forum: GUI: WPF und XAML

Was mir nicht in den Kopd geht, ist dass die Anwendung ohne Probleme läuft und auch im ViewModel direkt kein Fehler angezeigt wird, nur im XAML Editor...

Thema: SQL Error wenn ViewModel im XAML gesetzt wird
Am im Forum: GUI: WPF und XAML

Das Netzwerkproblem, das beschrieben wird, existiert ja nur im XAML Editor. Sowohl im ViewModel, als auch In der laufenden Anwendung werden keine Fehler angezeigt. Wo suche ich denn da?
Und die drei Schichten-Architektur wird doch in dem Fall umgesetzt?! Ich habe meine Datenbankklasse, meine UI und das ViewModel, was die beiden verbindet, oder verstehe ich da was falsch?

Thema: SQL Error wenn ViewModel im XAML gesetzt wird
Am im Forum: GUI: WPF und XAML

Hallo zusammen,

ich weise meiner View das Viewmodel in XAML zu:

<Window.DataContext>
    <ViewModel:Home_VM x:Name="VM"/>
</Window.DataContext>

Hier wird mir die mittlere Zeile als Fehler markiert:
Fehler
Netzwerkbezogener oder instanzspezifischer Fehler beim Herstellen einer Verbindung mit SQL Server. Der Server wurde nicht gefunden, oder auf ihn kann nicht zugegriffen werden. Überprüfen Sie, ob der Instanzname richtig ist und ob SQL Server Remoteverbindungen zulässt. (provider: SQL Network Interfaces, error: 26 - Fehler beim Bestimmen des angegebenen Servers/der angegebenen Instanz)

Mein ViewModel:

public class VM : BaseViewModel
    {

        private ObservableCollection<Song> _HitList;

        public ObservableCollection<Song> HitList
        {
            get
            {
                using (var db = new DB())
                {
                    List<Album> ListOfAlbums = new List<Album>(db.Albums);
                    List<Interpret> interprets = new List<Interpret>(db.Interprets);
                    return new ObservableCollection<Song>(new List<Song>(db.Songs.OrderBy(x => x.Played)).Take(10));

                }
            }
            set
            {
                _HitList = value;
                RaisePropertyChanged(nameof(HitList));
            }
        }

        private ObservableCollection<Album> _WhatsNewList;
        public ObservableCollection<Album> WhatsNewList
        {
            get
            {
                using (var db = new DB())
                {
                    List<Interpret> interprets = new List<Interpret>(db.Interprets);
                    List<Album> ListOfAlbums = new List<Album>(db.Albums);
                    List<Album> Sorted = new List<Album>(ListOfAlbums.Where(x => DateTime.Parse(x.ImportDate) > DateTime.Now.AddDays(-7)));
                    return new ObservableCollection<Album>(Sorted);
                }

            }
            set
            {
                _WhatsNewList = value;
                RaisePropertyChanged(nameof(WhatsNewList));
            }
        }

        public VM()
        {

        }
    }

Die App wird zwar fehlerfrei gebaut und funktioniert auch einwandfrei, aber sobald ich im XAML Code arbeiten will, hängt sich VS für mehrere Sekunden auf, und das jedes mal wenn ich was tippe, kopiere, oder lösche, arbeiten also unmöglich.

Es liegt wohl daran, dass im Konstruktor meines Viewmodels bzw in den Propertys bei der Initialisierung der Klasse, auf die DB (in meinem Fall Entity Framework) zugegriffen wird.
Wenn ich alle DB Zugriffe auskommentiere, ist das Problem auch verschwunden.
Wie kann ich nun die Klasse aufbauen, dass beim Starten der Anwendung auf die DB zugegriffen wird, ohne dass mir dieser Fehler die Arbeit undmögloch macht?

Vielen Dank im Vorraus!

Thema: Wie in einer Xamarin.Shell Anwendung eine neue Seite aufrufen und einen Parameter übergeben?
Am im Forum: Cross Platform Entwicklung - Mobile und IoT

Hallo zusammen,
ich möchte in einer Xamarin.Shell Anwendung eine neue Seite aufrufen und einen Parameter übergeben. Leider kommt der Parameter nicht an. hier mein Code:

private async void GetInformation(string ID)
        {
            Routing.RegisterRoute(nameof(Views.BookDetails), typeof(Views.BookDetails));
            await Shell.Current.GoToAsync($"{nameof(Views.BookDetails)}?BookID={ID}");
        }

Hier hat die ID noch einen Wert

    [QueryProperty(nameof(BookID), nameof(BookID))]
    public partial class BookDetails : ContentPage
    {
        public string BookID 
        { 
            get => id; 
            set 
            { 
                id = Uri.UnescapeDataString(value); 
                OnPropertyChanged(); 
            } 
        }
        public string id;
        public BookDetails()
        {
            InitializeComponent();
            BindingContext = new ViewModels.BookDetails_VM(string id);
        }

Hier sollte die ID eigentlintlich ankommen, aber die Werte sind immer null.
Was übersehe ich? Ich hab zig Dokumentationen gelesen, aber irgendwo stimmt was nicht...

Schonmal vielen Dank!

Thema: Wie hoste und deploye ich eine HTTP API?
Am im Forum: Web-Technologien

Weil ich mich, wie gesagt, überhaupt nicht mot dem Thema auskenne und dem entsprechend auch gar nicht weiß was ich brauche. Bis jetzt dachte ich, dass ich mich mittels putty in meine domain einloggen um dort einfach die exe zu starten, aber anscheinend reicht das doch nicht. Aber stimmt, der Kundenservice ist dann mal meine nächste Anlaufstelle.
Danke

Thema: Wie hoste und deploye ich eine HTTP API?
Am im Forum: Web-Technologien

LaTino,
das ist der 1&1 Basic Vertrag vermute es wird dieses schräge Webhosting sein. An und für sich hatte die die Domain damals für ein ganz anderes Projekt (normale Website) gebucht. An APIs dachte ich da noch nicht und in meinen Einstellungen sehe ich auch nirgends irgendwas von Servern oder Webservices oder irgendetwas in der Richtung.

Thema: Wie hoste und deploye ich eine HTTP API?
Am im Forum: Web-Technologien

Vielen Dank für die Antwort!
Mein grösstes Problem ist es die Api auf meinem Domain zum laufen zu bekommen. Wenn ich das Projekt deploye, erhalte ich ca 400 Files inkl einer Exe. Die ganzen Files lade ich dann auf meine Domain hoch, habe dann aber Probleme dir Exe zu starten.
Ich habe die Domain von 1&1 und kann via Putty auf die Domain zugreifen, wenn ich aber versuche die Exe zu starten, bekomme ich nur als Meldung "permission denied".
Auch habe ich die Exe bei den cronjobs hinzu gefügt, aber zugreifen kann ich immernoch nicht auf die api... 404 die ganze Zeit

Gibt es irgendwo ein Tutorial für richtig Dumme, wie ich die Api auf meIner Domain zum Laufen bekomme? Hatte nicht gedacht dass das so viel Zeit in Anspruch nimmt..

ich bin langsam auch schon so weit, dass ich statt einer api einfach ein Textfile erstelle und per sftp auf meine Domain lade. Das wäre funktional, wenn auch nicht die perfekte Lösung.

Kriz

Thema: Wie hoste und deploye ich eine HTTP API?
Am im Forum: Web-Technologien

Hallo zusammen,
folgender Sachverhalt:
Ich habe eine App, welche im Rahmen einer "Registrierung" verschiedene Daten vom Nutzer abfragt. Diese Daten (es handelt sich einfach nur um fünf einfache strings) möchte ich nun in irgendeiner Form zugeschickt bekommen. Nach etwas googeln habe ich mir überlegt das per web api zu bewerkstelligen. Da ich mich alleridings noch nie mit dem Thema beschäftigt habe, Ist das eine mittelschwere Herausforderung.
ich habe mich an diese Anleitung gehalten hier
Wenn ich mittels postman auf die api zugreife, funktioniert das auch. Wenn ich nun das Projekt veröffentliche (in einen Ordner) habe ich dort aber ca 20 verschiedene Files, lade ich die nun einfach auf meine Domain und kann da dann genau so darauf zugreifen wie in Postman? Nur halt localhost mit der domain ersetzen?
Und wie sieht dann normaler http post befehl aus wie ich ihn dann in meiner app nutzen möchte?

Ich hoffe ich habe mich halbwegs verständlich ausdrücken können.

Kriz

Thema: Nach starker Zunahme der Zugriffszahlen ist AdMob Account eingeschränkt
Am im Forum: Cross Platform Entwicklung - Mobile und IoT

Servus zusammen!
Ja ich weß, die Frage hat weniger mit C# zu tun, aber mir wurde hier schon mehr als ein mal gut geholfen im Forum, daher versuche ich es trotzdem mal.
Ich habe mit Xamarin eine Android App entwickelt und AdMob zum vermitteln von Werbeanzeigen eingerichtet. Bis dahin auch alles fein und es lief gut an. Dann wurde meine App auf meiner Arbeit vorgestellt und die Downloadzahlen und damit die Werbeabrufe von einen Tag auf den anderen verfünffacht. Das brachte Google dazu meinen Account zu überprüfen weil man davon ausgeht, dass da was nicht richtig sein kann. Dadurch werden keine bis kaum Anzeigen mehr ausgeliefert und meine Einnahmen sind nur noch einpaar Cent.
Meine Frage ist nun, hat jemand Erfahrung mit dieser Situation und einen Anhaltspunkt wie lange das dauern kann? Von Google kommt.gar keine Antwort auf die Frage und im Comunotyforum bekomme ich auch keine klare Antwort...

Schonmal Danke!!
Kriz

Thema: Wie erstelle ich einen HTTP Post Endpunkt?
Am im Forum: Web-Technologien

@Abt
Vielen Dank für die Antwort! Ich wusste ja nicht mal wonach ich suche, aber Post Endpunkt und API ist natürlich ein super Ansatz!
Ich danke Dir für den Denkanstoss!
Kriz

Thema: Wie erstelle ich einen HTTP Post Endpunkt?
Am im Forum: Web-Technologien

Guten Abend,
ich habe schon einiges gegoogelt, hab aber noch nicht das richtige gefunden...
Ich möchte aus einer App heraus Daten an meinen Server senden (XML Datei und später auch jpg). Aktuell mache ich es so, dass die Datei mir per Email geschickt wird und ich sie dann auf den Server lade. Was ja derbst unproduktiv ist.
Nun gibt es ja die HTTP Post Möglichkeit. Nun meine Frage: Wohin schicke ich die Datei? Also wie sieht so ein Empfänger aus? Bastel ich den selber? Bietet mein Domain Hoster den an? Gibts den bei OBI?

Ich hoffe ich konnte meine Frage verständlich ausdrücken...

Schonmal vielen dank!!Kriz

Thema: CSV-Dateien vom eigenen Server laden
Am im Forum: Web-Technologien

Ich bedanke mich für die Antworten!!

Thema: CSV-Dateien vom eigenen Server laden
Am im Forum: Web-Technologien

Hallo zusammen!

Ich entwickel gerade eine kleine Android-App. Dafür würde ich gerne CSV-Datein und einige PNG Dateien von meiner Internetdomain runterladen. Die Domain ist eine stink-normale, bei 1&1 gehostete Internetdomain. Die Dateien die runter geladen werden sollen, sind auch nicht sicherheitsrelevant, also keine sensiblen Daten, Hinz und Kunz könnten sie lesen, würden sich aber wahrscheinlich nicht dafür interessieren.
Kann ich die Daten einfach auf meine Domain uploaden und dann von der App downloaden, oder gibt es da Sicherheitsaspekte die ich beachten müsste? In ferner Zukunft werden auch andere diese App nutzen und diese Daten runter laden.

Vielen Dank!
Kriz

Thema: WPF DataBinding Verständnisproblem
Am im Forum: GUI: WPF und XAML

Guten Morgen Freunde der Sonne!

Sorry für den Titel, mir ist leider nichts besseres eingefallen...

Folgende Situation:
Ich habe ein View mit (unter anderem) einem Datagrid. In meinem Viewmodel habe ich eine ObservableCollection<Person> welche als Source für das Datagrid dient.

class Schedule
{
    public string Name { get; set; }
    public string ShortSymbol { get; set; }
}
class Person
{
    public ObservableCollection<Schedule> plannedSchedule { get; set; }
}

Diese ObservableCollection hat wiederum eine ObservableCollection<Schedule> mit der ich im CodeBehind die Spalten für das Datagrid erstelle. Ja, sowas sollte nicht im CodeBehind gemacht werden. Da aber plannedSchedule immer eine andere Anzahl aufweist, wusste ich mir nicht besser zu helfen.

for (int i = 0; i ≤ Days-1; i++)
{
    DataGridTextColumn dataGridTextColumn = new DataGridTextColumn()
    {
        Header = MasterRota.StartDate.AddDays(i).ToString("dd.MM.", german),
        Binding = new Binding($"plannedSchedulesThisWeek[{i}]")
    };           
    DGrid.Columns.Add(dataGridTextColumn);
}

Bis hierhin funktioniert auch alles super. Die Spalten werden alle korrekt abgebildet und gegen als ToString() die property Name wieder.

Nun habe ich mir einen Trigger gebastelt, der unter bestimmten Voraussetzungen dafür sorgen soll, dass nicht die Name Property, sondern die ShortSymbol Property wieder gibt. Und hier komme ich nicht weiter:
<DataTrigger Binding="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}}, Path=DataContext.UseShortSymbol}" Value="true">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type DataGridCell}">
                <Grid Background="{TemplateBinding Background}">
                    <ContentPresenter HorizontalAlignment="Center" Content="{Binding ShortSymbol}"/>
                </Grid>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</DataTrigger>

Es wird mir der Fehler angezeigt, dass die Klasse Person keine Eigenschaft ShortSymbol besitzt, was ja richtig ist. Aber das Binding ist doch auf ein plannedSchedule, nicht auf Person?!? Wie komme ich an das richtige Binding um auf das korrekte plannedSchedule.ShortSymbol zuzugreifen?

Thema: MVVM: Event abonieren von einem anderen View
Am im Forum: GUI: WPF und XAML

@ BhaaL
ne, das Viewmodel wird im Konstruktor vom View erst erstellt

aber stimmt, jetzt wo du es sagst kann ich ja das Viewmodel auch vorher schon, also mit dem View zusammen instanzieren und als DataContext setzen und so dann auch das Event abonieren...

Thema: MVVM: Event abonieren von einem anderen View
Am im Forum: GUI: WPF und XAML

Guten Morgen!

Ich habe ein Hauptfenster, von dem aus ich ein weiteres Fenster zum Speichern von Daten öffne.
Wenn ich nun in dem Speichern-Fenster bestätige, wird dieses geschlossen und ein Event gefeuert "HabeGespeichert". Wie kann ich im ViewModel meines Hauptfensters auf das Event des ViewModels meines Speichernfensters zugreifen? Also es abonieren.
Oder gibt es für so einen Fall ein anderes Best Practise?

Danke Euch!

Thema: Im SQLite automatisch Spalten erstellen lassen
Am im Forum: Datentechnologien

Alles klar, dann werde ich den Ansatz von Thomas.at verfolgen.
Vielen Dank für Eure Hilfe!!

Thema: Im SQLite automatisch Spalten erstellen lassen
Am im Forum: Datentechnologien

Die Idee hatte ich auch, aber wie sieht es da mit der Performance aus? Nehmen wir mal an, wir haben 100 Mitarbeiter die alle eine fünf Tage Woche haben und keinen Urlaub machen, dann haben wir 26.000 Einträge. Ist das eine normale Größenordnung, oder werden Abfragen da länger dauern? Mein Kenntnisstand bei Datenbanken ist eher rudimentär...

Thema: Im SQLite automatisch Spalten erstellen lassen
Am im Forum: Datentechnologien

Die Situation ist folgende:

Es wird ein Dienstplan für ein Restaurant geschrieben. Dieses Restaurant hat jeden Tag im Jahr geöffnet (jaja, die armen Gastronomen!), daher die 365 Spalten. Nun bekommt jeder Mitarbeiter eine eigene Zeile, mit den IDs für die Schichten je Tag. Die Schichten sind dann in einer separaten Tabelle wo auch die Pausen und sonstige weitere Informationen abgelegt sind.
Nun arbeitet natürlich niemand 365 Tage durch, somit wird die ein oder andere Spalte bei den Mitarbeitern leer sein.
Aktuell habe ich es so gelöst, dass ich die Dienstpläne wochenweise speicher.
Dafür habe ich folgende Tabellen:
1. Tabelle mit Informationen zum Dienstplan (Dienstplan ID, Startdatum, Notizen, usw)

2. Tabelle die einer Dienstplan ID die passenden Mitarbeiter mit den Verweisen zu den gearbeiteten Schichten verknüpft. Pro Dienstplan ID gibt es mehrere Zeilen, pro Mitarbeiter eine. Das angefügte Bild veranschaulicht es vllt etwas. (DiID = Dienstplan ID, MiID = Mitarbeiter ID, und unter den Tagen sind die jeweiligen IDs für die gearbeiteten Schichten)

3. Tabelle für die gearbeiteten Schichten inkl Pausenzeiten usw.

Das wirkt für mich langsam alles wie eine "Flickschusterei" und etwas umständlich, besonders wenn ich Auswertungen vornehmen möchte wann wer wie gearbeitet hat, wieviel Mitarbeiter durchschnittlich zu einem einem bestimmten Zeitpunkt da sind und so weiter.
Daher dachte ich mir, dass ich einfach eine Jahrestabelle erstelle...

Thema: Im SQLite automatisch Spalten erstellen lassen
Am im Forum: Datentechnologien

Was wäre denn der Vorteil der zweiten Variante?
In der aktuellen Situation kann ich mit meinem Reader direkt auf die passende Spalte zugreifen.
In deinem Vorschlag müsste ich ja dann die komplette Zeile einlesen, splitten, um dann auf den passenden Eintrag/Spalte zugreifen zu können.
Wäre das schneller bzw speichersparsamer?