Generell finde ich den Ansatz von MVVM schon sehr praktisch, egal ob Desktop, Mobile, oder Web. Es ist einfach strukturierter als beispielsweise MVU.
Mir ging es hier speziell um das Übermitteln von Parametern von einem ViewModel zum Nächsten, ohne die View nutzen zu müssen, da das ja irgendwie dem Prinzip von MVVM widerspricht.
Klar gibt es x Nuget-Packages dafür, oder das interne MessageCenter bei Xamarin, aber das "fühlt sich nicht richtig an".
mein aktueller Workflow in meinen Projekten (Xamarin/Maui/WPF):
Viewmodel:
public DetailViewModel(int itemID)
{
//ViewModel Zeug
}
View CodeBehind:
public partial class DetailPage : ContentPage
{
public DetailPage(int itemID)
{
BindingContext = new DetailViewModel(itemID);
InitializeComponent();
}
}
Aufrufen der View:
App.Current.MainPage = new DetailPage(123);
So hab ich es "damals" gelernt und so funktioniert es auch, aber mittlerweile frage ich mich, ob es der richtige Weg ist bzw ob es nicht einen besseren Weg gibt?!
Ich störe mich daran, dass ich den Parameter 123 erst an die View geben muss, damit diese ihn an das ViewModel weiter gibt.
ich entwerfe gerade eine Lebenssimulation als mobile App/Spiel (ja, davon gibts schon ohne Ende, aber darum geht es nicht).
Als Datenspeicher werd ich eine ganz einfache SQL Datenbank nutzen um die verschiedensten Dinge abspeichern zu können.
Ab und an sollen Zufallsereignisse ausgelöst werden. Diese können mal nur eine Antwort-Option enthalten, oder mal (maximal) drei. Soweit kein Problem. Nur stocke ich beim folgenden Gedankengang und weiß nicht recht wie ich das am geschicktesten umsetze:
Die Antwortoptionen können verschiedene "Situationen" auslösen. Also beispielsweise die Veränderung der Beziehung zu einer Person, eine Gehaltserhöhung, das geliebte Haustier muss eingeschläfert werden, oder es passiert einfach nichts.
Beispiel: Du gehst mit Deinem geliebten Haustier "Waldi" spazieren, durch einen dummen Zufall wird Waldi von einem SUV angefahren. Der Fahrer steigt aus seinem Auto und siehe da, es ist Dein Chef.
Reaktionen:
Eskalieren - Das Verhältnis zu Deinem Chef verschlechtert sich um x%, Waldi überlebt mit einer Schramme
Ruhig bleiben - Du bekommst eine Gehaltserhöhung weil Dein Chef ein schlechtes Gewissen hat, Waldi stirbt aber
Ja blödes Beispiel, aber es zweigt was ich meine.
Wie kann ich das am besten in der Datenbank umsetzen?
erstmal danke für die Antwort!
Das heisst das vorhandene Zertifikat (mit CERTIFICATE und PRIVATE KEY Abschnitt) kann ich als Client-Zertifikat nehmen, aber ist als Server-Zertifikat ungeeignet?!
Servus,
ich bin auf der Suche nach kleineren Projekten im .NET Umfeld. Also Beispielsweise Websites(OnePager), Module für bestehende Software, einfache APIs entwickeln, oder anbinden.
Auf Freelancer Plattformen (bsp Gulp) werden meist nur grosse Projekte angeboten, da ich aber bereits VZ arbeite sind die zu aufwendig und mir fehlt die Zeit dafür.
Mein Techstack umfasst unter anderem mobile Entwicklung (Xamarin), WPF, SQL und ASP.
Falls also jemand jemanden sucht für kleine Aufgaben, dann bin ich der Richtige
Falls jemand eine gute Projektbörse kennt die meine Ansprüche abdeckt wär ich auch dankbar!
nehmen wir mal an, Ihr habt eine DesktopApp entwickelt, testet Ihr sie auf verschiedenen Systemen (Win 10, WinServer, mit/ohne SP, usw) und wenn ja, wie bewerkstelligt ihr das? Für jede mögliche Konfiguration eine eigene VM erstellen wird ja recht aufwendig werden. Oder gibt es da third party tools für?
Jein, mir fehlt die Möglichkeit dynamisch an die Propertys zu binden.
Ich kann bei einer DataGridTextColumn dynamisch an jeden Index meiner ObservableCollection binden, bei einer DataGridTemplateColumn leider nicht. Da kann ich nur die gesamte ObservableCollection dran binden, das bringt mir aber nichts.
for (int i = 0; i < MaxColumn; i++)
{
DataGridTemplateColumn column = new DataGridTemplateColumn() { Header = vm.StartDate.AddDays(i).ToShortDateString(), CellTemplate = template };
grdRota.Columns.Add(column);
}
Mit diesem Code ist der DataContext jeder Spalte die gesamte ObservableCollection, ich möchte aber pro Spalte den jeweiligen Index haben.
Ich habe mittlerweile auch DataTables ausprobiert, das fühlt sich aber sehr wie Flickschusterei an.
Folgendes Problem:
Ich möchte in meinem DataGrid ein DataTemplate für meine Cells benutzen. Nur kann man daran (anscheinend) nicht dynamisch binden. Welche Möglichkeiten gibt es?
ItemSource des DataGrid ist eine ObservableCollection<EmployeeRota>:
class EmployeeRota : BaseViewModel
{
private Employee _employee;
public Employee employee
{
get { return _employee; }
set { _employee = value;
OnPropertyChanged(nameof(employee));
}
}
private ObservableCollection<Shift> _ListOfShifts;
public ObservableCollection<Shift> ListOfShifts
{
get { return _ListOfShifts; }
set { _ListOfShifts = value;
OnPropertyChanged(nameof(ListOfShifts));
}
}
}
Das erstellen der Spalten erfolgt dynamisch, da ListOfShifts 1 - x Elemente enthalten kann:
//Spalte für den Namen erstellen
DataGridTextColumn NameColumn = new DataGridTextColumn() { Header = "Name" };
Binding NamebindingExpression = new Binding($"employee.Name") { Mode = BindingMode.OneWay };
NameColumn.Binding = NamebindingExpression;
grdRota.Columns.Add(NameColumn);
//Spalten für die Schichten abhängig der Anzahl der Einträge erstellen
DataTemplate template = (DataTemplate)grdRota.FindResource("template");
int MaxColumn = vm.ListOfEmployeeRotas.Max(x => x.ListOfShifts.Count);
for (int i = 0; i < MaxColumn; i++)
{
DataGridTemplateColumn column = new DataGridTemplateColumn() { Header = vm.StartDate.AddDays(i).ToShortDateString(), CellTemplate = template };
grdRota.Columns.Add(column);
}
das gewünschte Ergebnis erhalten, aber DataGridTemplateColumn enthält keine Eigenschaft Binding. Und ich würde gern DataGridTemplateColumn nutzen.
Also zusammen gefasst:
Jede Zelle/Spalte muss dynamisch an den entsprechenden Index einer ObservableCollection gebunden werden.
Mit DataGridTextColumn kein Problem, es muss aber DataGridTemplateColumn benutzt werden.
Ein Bonus wäre auch, wenn ich die Spalten im XAML erstellen könnte und dafür nicht extra im Code-Behind rumwurschteln müsste.
folgendes Problem:
Ich muss an eine SOAP Schnittstelle Daten senden, bekomme aber als Antwort immer nur
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
<S:Body>
<S:Fault xmlns:ns4="http://www.w3.org/2003/05/soap-envelope">
<faultcode>S:Server</faultcode>
<faultstring>The configured protocol is not SOAP, which has been requested.</faultstring>
</S:Fault>
</S:Body>
</S:Envelope>
Leider kenne ich mich nicht mit SOAP aus und wenn ich die Fehlermeldung google, bekomme ich gar keine passende Antwort. Ich weiß noch nicht einmal an welcher Stelle ich den Fehler suchen muss, liegt es an meinem Code, oder an der übermittelten Datei?
Mein Code:
XmlDocument Doc = new XmlDocument();
Doc.InnerXml = result.ToString();
HttpWebRequest Req = (HttpWebRequest)WebRequest.Create(PriceURL);
Req.Headers.Add("SOAPAction", "");
Req.ContentType = "text/xml;charset=\"utf-8\"";
Req.Accept = "text/xml";
Req.Method = "POST";
Req.Timeout = 10000;
Req.ClientCertificates.Add(Certi);
using (var streamWriter = new StreamWriter(Req.GetRequestStream()))
{
streamWriter.Write(Doc);
}
//Überprüfen ob API Daten korrekt erhalten hat
using (var response = (HttpWebResponse)Req.GetResponse())
{
using (var streamReader = new StreamReader(response.GetResponseStream()))
{
var json = streamReader.ReadToEnd();
}
}
das Feld "result" vom Typ StringBuilder
Bevor es jetzt wieder böse Kommentare kommen:
Ich hab das Projekt aufs Auge gedrückt bekommen, das wurde vor 13 Jahren mal geschrieben und seit dem war da keiner mehr dran, nun soll ich als Service und WPF portieren. Bis jetzt hatte ich auch noch nie irgendwelche Berührungspunkte mit SOAP und werde es danach auch nicht mehr haben.
Ich kann "The configured protocol is not SOAP, which has been requested." übersetzen, weiß aber weder wo dieses Protokoll konfiguriert wird/wurde, noch von welcher Seite es verlangt wird/wurde.
Das wird eine rein lokale Kommunikation. Die WPF Oberfläche wird einfach nur die GUI für den WindowsService sein und auf dem gleichen Rechner laufen.
Der Service ließt DB-Daten aus und senden sie an eine API. Die GUI soll einfach nur den Status des Services zeigen und kleine Einstellen setzen, die in einer INI gespeichert werden. Diese ließt dann der Service aus.
WCF muss nicht zwingend sein, hab den Begriff nur beim Googlen aufgeschnappt und mal reingelesen.
da ein WindowsService keine eigene UI haben sollte, habe ich mich für ein WPF Projekt als Oberfläche entschieden.
Welche Möglichkeiten habe ich nun mit dem Service zu kommunizieren? Es geht um ganz rudimentäre Kommunikation (bin da, starte neu, Aufgabe läuft).
Eine Möglichkeit ist anscheinend WCF, das wirkt mir aber etwas umständlich, da es anscheinend über http kommuniziert, oder hab ich mich da verlesen?
Welche Möglichkeiten habe ich denn noch?
folgende Situation:
Ich habe eine ASP Core Webanwendung (MVC mit Razor), dort können Nutzer sich registrieren. Dafür nutze ich das vorgegebene Template für Autorisierung und Authentifizierung in VS2019.
Zusätzlich befindet sich auf dem gleichen Server auch die API für meine App und die Webanwendung.
Nun möchte ich, dass sich die User auch in meiner App anmelden können.
Ein Ansatz wäre nun in der Api einen Endpunkt einzurichten, der die Credentials des User entgegennimmt, und ihn verifiziert, das kommt mir aber irgendwie unsicher und nicht gewollt vor.
Gibt es für sowas bereits eine BuildIn Lösung in ASP Core, oder welchen Ansatz verfolge ich da am besten?
ich hab eine API, die auf eine SQL Datenbank zugreift. Insgesamt sind es grob 300 verschiedenste Abfragen.
Lange Abfragen, die im Code schwer zu lesen sind, habe ich als StoredProcedur angelegt, kürzere Abfragen direkt im Code.
Beim Refactoring ist mir dieses Durcheinander aufgefallen un dich überlege, ob es nicht bessere Lösungen gibt?!
Beispielsweise könnte man ja die Strings auch in eine separate TXT ablegen und abrufen, oder eine statische Klasse nutzen...
Ich würde gern in unregelmässigen Abstände Newsletter an die Nutzer meiner mobilen App senden. Bei meinem Website Anbieter (IONOS) ist das Limit bei 200 Mails am Tag. Ich hab eine Zeit lang Mailchip genutzt, dort ist das Limit im kostenlosen Paket aber 1000 Empfänger. Aktuell bin ich bei Newstroll, dort zahle ich 10€ im Monat für 50.000 Mail pM.
Ich sende aber aktuell vllt alle drei-vier Monate mal einen Newsletter, das lohnt sich also nicht wirklich.
Kurzum, wie kann ich einen eigenen Newsletter Service aufsetzen, also wie gehe ich das an und wie sind die Kosten?
ich entwickle eine Weboberfläche mit der Bilder auf einen FTP Server geladen werden können, diese werden dann in einer App, sowie auf weiteren Websites verwendet.
Technisch habe ich keine Frage, mir geht es um die verschiedenen Sicherheitsaspekte, an die ich denken müsste. Also wie würdet ihr Dateiupload sichern? Mir fällt da spontan erstmal nur ein, anhand der Dateiendung zu checken, ob die Datei überhaupt eine Grafikdatei ist. Das lässt sich natürlich sehr leicht umgehen, indem man eine Exe beispielsweise einfach nur umbenennt.
Also wo sollte ich da ansetzen mit dem Sicherheitskonzept?
in einigen Asp.NET Projekten (Sowohl MVC, als auch API) versende ich Mails, am liebsten HTML formatiert.
Gibt es einen schönen Weg HTML formatierte EMails zu erstellen?
Mein aktuelles Vorgehen:
1. HTML Template mit VS Code erstellen
2. das HTML File als string in mein C# File kopieren
3. per string.Replace() die Platzhalter ausfüllen
Was mich daran stört, ist der teils ellenlange HTML-string. Man kann ihn einfach schlecht lesen.
Wenn ich eine Kleinigkeit an der Mail ändern will suche ich mich teils blöd, oder muss dann erst wieder umständlich in VS Code editieren, kopieren, usw.
Schön wäre es ja, wenn ich mit Razor arbeiten könnte.
Welche Ansätze verfolgt ihr denn so?
An die Admins, bei Mails vom Forum steht in der Signatur "Made with ASP.Net", bezieht sich das aufs Forum, oder hab ich da bei Asp.Net eine Möglichkeit übersehen Mails zu erstellen?
Es geht um eine Xamarin App. Dort werden die Artikel nacheinander angezeigt. Also erst der Artikel mit der Sortierung 1, der wird dann bearbeitet, gespeichert und dann kommt der nächste Artikel und so weiter. Also nicht in einer Listview, sondern jeder Artikel ist an eine ContentPage gebunden.
Nun hat der Nutzer die Möglichkeit einen Artikel von Position 8 auf Position 3 zu verschieben. Dafür öffnet sich ein PopUp, "Verschiebe den Artikel "Milch" hinter den Artikle ..." dort kann dann die Artikelnummer oder der Artikelname eingegeben werden und der Nutzer kann den Artikel dann auswählen, der als Ziel genommen werden soll.
Das muss dann auch gespeichert werden (deswegen als Property), damit die Sortierung auch beim nächsten Start der App noch vorhanden ist.
Also es geht nicht darum, wie ich die Liste sortieren kann, sondern ob es für das Umsortieren eine andere Möglichkeit gibt, als eingangs erwähnt.
Also quasi "Verschiebe ItemE VOR ItemC"
Mein Ansatz wäre nun dass das zu verschiebende Item (ItemE) die Sortierung-Property von ItemC bekommt und bei alle folgenden Items die Sortierung Property um 1 erhöht wird, bis zum ursprünglichen Platz von ItemE.
Das wirkt mir allerdings irgendwie umständlich. Gäbe es da noch einen anderen Ansatz? Also ich möchte keinen Code, den kann ich mir selber schreiben. Mir geht es darum, den Ansatz den ich habe, zu optimieren.
Es geht darum, dem Nutzer eine Möglichkeit zu geben, Artikel so zu sortieren, wie er es braucht.
Die besagten Seiten arbeiten nicht mit der Facebook API, die dort formatierten Texte kann ich auch bei Notepad formatiert einfügen. Es muss wohl also irgendeine Standartformatierung sein, bin aber in dem Thema nicht all zu fit.
Die API Dokumentation von Facebook erläutert leider nur die Formatierung bei Workspace Posts. Zu Page-Posts steht da nichts. Die Markups die bei Workspace funktionieren, haben bei Page Posts keinen Effekt.
Auch HTML Tags oder RTF haben keinen Erfolg.
Es gibt Website Tools, in denen der Text formatiert, kopiert und in Facebook mit Formatierung eingefügt werden kann, also irgendeine Möglichkeit scheint es ja zu geben.
Bis hierhin habe ich alles auch schon mehrfach ausprobiert. Da aber der Facebook Account gesperrt wird, wenn zu oft Zugriffe auf die API erfolgen (Wie auch immer der Algorithmus da anspringt) und mein Konto zwei mal in drei Stunden gesperrt wurde, wollte ich doch mal schauen, ob jemand schon etwas ähnliches versucht und vllt erfolgreich geschafft hat.
Wenn dann dumme Antworten wie "Sollen wir Dir Deine Arbeit abnehmen?" und "Versuch doch mal statt zu warten!" kommen, wundert es nicht, dass Programmierer als sozial inkompetent angesehen werden!
Hey, mega Dank, für diese kompetente Antwort! Wo genau steht denn in meiner Frage, dass ich das gerne abgenommen haben möchte?
Ja, die Dokumentation habe ich schon gelesen, es wird viel und ausführlich über das Posten an sich geschrieben, aber das Thema Formatieren wird bis auf Workplaces nicht behandelt.
wenn man in Facebook Beiträge erstellt, kann man die immer recht hübsch formatieren, ist dies auch über die API möglich?
Also das Posten funktioniert, mir gehts um die Formatierung.