Entschuldigung, dass ich es falsch formuliert hatte, aber ich hatte noch nie behauptet, dass ich MVVM verwende.
Ich arbeite mit MVC-Pattern wegen Verwendung von RoutedUICommands in separaten Namespaces (die sind in MVVM gar nicht möglich) statt mit generischen Action<> und Func<>-Delegates.
MVVM ist doch erst bei größeren Anwendungen sinnvoll aufgrund des Overheads
Ich habe ein MainWindow mit diversen Page-Instanzen erzeugt, die durch Clicks angezeigt werden.
Bei Clicks funktioniert im Programm auch alles, aber der Debugger zeigt mir zig BindingExpression-Fehler an. Muss ich die aktuell angezeigte Page bei einem Click immer zerstören? Und wie geht das?
public partial class Page_1 : Page
{
public static MainWindow haupt;
public Page_1(ref MainWindow mw)
{
InitializeComponent();
mw.DataContext = ...
in meinem Programm sind mehrere Collections enthalten und wenn eine andere ausgewählt wird, muss ich ja meine TaskbarItemInfo mit den (Vor/Zurück)-Buttons anpassen. Ich bekomme aber immer nur einen Fehler:
Fehler
Der String kann nicht in "System.Windows.Input.ICommand" konvertiert werden.
Auch die Lösungsvorschläge von VS zeigen alle denselben Fehler an. Wie kann ich einen bestehenden Command korrekt hinzufügen?
Wieso verwendet C# eigentlich ein separates Typsystem mit Wertetypen? Denn eigentlich lassen sich diese ja auch alle auf Klassen zurückführen und wären somit Referenztypen.
Sind Wertetypen nur eine lose Festlegung oder gibt es einen bestimmten Grund für die Deklaration?
die Methode Ausgabe() liefert auch nur einen String, in der Vorschau wird sogar alles korrekt angezeigt, aber beim Kompilieren kommt immer nur 10x die Fehler-Meldung:
Fehler
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Current\Bin\Microsoft.Common.CurrentVersion.targets(4206,5): warning MSB3026: "obj\Debug\ODP.exe" konnte nicht in "bin\Debug\ODP.exe" kopiert werden. Wiederholung 1 wird in 1000 ms gestartet. Der Prozess kann nicht auf die Datei "bin\Debug\ODP.exe" zugreifen, da sie von einem anderen Prozess verwendet wird. Die Datei wird durch "ODP (12764)" gesperrt.
ich habe eine TextBox zum Anzeigen und Ändern von Geldbeträgen. Eine falsche Eingabe soll einen roten Rahmen erzeugen. Ich versuchte dies mit einer Validation Rule, aber plötzlich kann ich die Zeichen ',' und '.' nicht mehr in die TextBox eingeben (alle anderen gehen). Was mache ich falsch?
Ich habe ein Rechteck aus aneinandergehängten Dreiecken (im Anhang ist ein Bild), das ich in ein Kreisdiagramm umwandeln möchte. CombinedGeometry akzeptiert die Polygon-Objekte nicht. Gibt es noch eine weitere Möglichkeit zum beschneiden?
Wo kann man die Dokumentation von C# finden, wo die kompletten Änderungen beschrieben werden?
Es wurden ja auch grundlegende Methoden entfernt (bspw. Thread.Abort), was heftige Fehler verursacht.
Was bringen mir sonst Neuerungen, wenn ich sie gar nicht kenne?
ich habe dem DockPanel-Bereich den Frame (mit der CheckBox) nochmals erneut zugewiesen, damit sich die Ansicht aktualisiert. So wird ja der Frame erneut geladen - was InitializeComponent() ausführt.
Page p = new FrameX();
haupt = p;
// Checkbox in p aktualisiert, und jetzt die Page erneut zugewiesen
haupt = p;
Ich dachte, dass Änderungen an der Ausgabe automatisch angezeigt werden, aber es klappte doch nicht. Erst als ich dann Frame p erneut zuwies, wurde die Ansicht aktualisiert
Danke für den Hinweis, ich habs weiter probiert und die Lösung gefunden:
die Bindung war schon zu Beginn korrekt erfolgt (Abfrage mit Debug), aber ich musste nochmal 'InitializeComponent()' aufrufen, damit die Ansicht der anfangs leeren CheckBox aktualisiert wurde.
ich möchte einige WPF-Elemente an Werte aus einem Array binden. Mit TextBox und DatePicker klappt auch alles, aber ich komme einfach nicht drauf, wie ich eine CheckBox an einen Bool-Wert binden kann.
Ich habs schon mit DataContext, Checked und IsChecked probiert! Die CheckBox bleibt immer leer - wie kann man eine Bindung an eine Boolean-Variable realisieren?
Ich habe eine ListView mit Objekten, die u.a. eine DateTime-Eigenschaft enthalten. Zum Editieren soll das selektierte Objekt in diversen Boxen angezeigt werden (DatePicker, TextBox,...). Die Bindung funktioniert auch überall, bis auf DatePicker. Ich hab es schon mit DataContext, DisplayDate und SelectedDate versucht. Die Objekte sind recht einfach aufgebaut:
public class Termin
{
private DateTime? _datum;
private String _ort;
private Int32? _dauer;
private Boolean _bemerkt;
...
}
Im ListView funktioniert die Datenbindung problemlos
führe doch einfach eine Konvertierung in eine Zahl durch, bspw. mit Convert.ToDouble()
dann kannst du mit if checken, ob dabei ein Fehler auftritt oder nicht...
Ich versteh den Sinn nicht:
?(
Du musst doch wissen, was du programmieren willst! Und VisualStudio zeigt dir in einem Klappfenster doch immer alle vorhandenen Methoden an
Wenn ich bei MVVM-Projekten den Namespace ändere, kommen oft Fehler wie 'InitializeComponents wird nicht mehr gefunden' trotz Neukompilierung!
Neuladen der Projektmappe hilft nichts, wenn ich jedoch Visual Studio beende und neu starte, ist der Fehler weg.
Ich arbeite mit VS2017 Community Version 15.1
Wäre es nicht sinnvoller, erst mal die Grundlagen von C# komplett zu lernen?
Es gibt tolle Bücher! Ich will keine Werbung machen, aber schau dir mal von Andreas Kühnel 'C#6 mit Visual Studio 2015' an - das wirst du nie bereuen!
- durchsuche jeden String nach dem Index des zweiten "/"
- nun kannst du einen String generieren von (0-Index)
- speichere die Strings in einer Collection, dann hast du das Ergebnis