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

  • »
  • Community
  • |
  • Diskussionsforum
Muss ich Page-Instanzen beim Schliessen zerstören? Und wenn ja: Wie?
CWolle
myCSharp.de - Member

Avatar #avatar-4065.jpg


Dabei seit:
Beiträge: 57
Herkunft: Süddeutschland

Themenstarter:

Muss ich Page-Instanzen beim Schliessen zerstören? Und wenn ja: Wie?

beantworten | zitieren | melden

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 = ...
OO gibts seit Platon - hatte der auch C#?
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 16.306

beantworten | zitieren | melden

Wir hatten ja schon in anderen Threads von Dir, dass Du MVVM nicht ordentlich anwendest; und hier sehe ich auch ein static, wo keines sein sollte.
Persönlich vermute ich insgesamt ein Folgefehler der falschen MVVM-Herangehensweise.
private Nachricht | Beiträge des Benutzers
CWolle
myCSharp.de - Member

Avatar #avatar-4065.jpg


Dabei seit:
Beiträge: 57
Herkunft: Süddeutschland

Themenstarter:

Korrektur

beantworten | zitieren | melden

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
OO gibts seit Platon - hatte der auch C#?
private Nachricht | Beiträge des Benutzers
T-Virus
myCSharp.de - Experte



Dabei seit:
Beiträge: 2.087
Herkunft: Nordhausen, Nörten-Hardenberg

beantworten | zitieren | melden

MVVM ist nicht von der Größe der Anwendung abhängig sondern das gängige Muster nachdem man WPF Anwendungen entwickelt.
Du solltest dich damit dringend beschäftigen!

T-Virus
Developer, Developer, Developer, Developer....

99 little bugs in the code, 99 little bugs. Take one down, patch it around, 117 little bugs in the code.
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 16.306

beantworten | zitieren | melden

Zitat von CWolle
MVVM ist doch erst bei größeren Anwendungen sinnvoll aufgrund des Overheads

MVVM hat einen gewissen Overhead; aber MVVM ist nun mal der Pattern, auf den die komplette WPF-Infrastruktur ausgelegt ist.

Der große Unterschied zwischen MVVM und MVC ist, dass MVVM eine Two-Way-Binding Strategie verfolgt und MVC nur ein One-Way-Binding. Das erklärt auch direkt, wieso MVC in den aller aller aller meisten WPF-Anwendungen überhaupt kein Sinn macht.
Das hat also nichts mit "Overhead" oder Größe der Anwendung zutun, sondern mit der Anwendungsstrategie an für sich.
Warum Du aber einen ganzen Pattern-Wechsel von MVVM auf MVC forcierst, und Dir damit entsprechende riesige Nachteile nur für RoutedUICommands ins Haus holst; versteh ich nicht.

Aber auch wenn Du nicht MVVM nutzen willst sondern MVC (Grund sei mal dahin gestellt); auch da arbeitet man auch absolut nirgends mit static; Du halt schon ;-)
Kurz über die anderen Threads von Dir geflogen arbeitest Du aber mit Code Behinds; sieht also so aus, dass Dir eben das MVC-One-Way-Binding gar nicht reicht und Du einfach den falschen Pattern verwendest - und mit "schmutzigen Wegen" die MVC-Defizite versuchst zu umschiffen.

Vermutlich ist einer dieser "Workarounds" schuld, dass Dein Page-Handling falsch ist.
private Nachricht | Beiträge des Benutzers
Th69
myCSharp.de - Experte

Avatar #avatar-2578.jpg


Dabei seit:
Beiträge: 4.587

beantworten | zitieren | melden

Der ganze Code ist fehlerhaft:
- Warum übergibst du das MainWindow per ref (du willst ja hoffentlich nicht aus einer Page heraus ein neues MainWindow erstellen?)?
- Warum setzt du den DataContext von mv (also dem MainWindow), anstatt von der Page?

Aber was sollen deiner Meinung nach überhaupt die BindingExpression-Fehler mit deinem gezeigten Code zu tun haben? Zeige uns doch besser die Fehler sowie den Code dazu.

Ich nehme an, du meinst mit "der Debugger zeigt mir ..." Laufzeitfehler?! Dann ist schon das initiale Binding falsch.

Und noch: Wie bindest du denn, wenn du kein MVVM benutzt (denn den DataContext benutzt du ja)?
private Nachricht | Beiträge des Benutzers
MrSparkle
myCSharp.de - Team

Avatar #avatar-2159.gif


Dabei seit:
Beiträge: 5.655
Herkunft: Leipzig

beantworten | zitieren | melden

Zitat von CWolle
Ich arbeite mit MVC-Pattern

MVC in WPF? Das ist doch für WinForms.

Aber wenn ich den Code so sehe, solltest du mal zwei, drei Schritte zurückgehen, und dir erstmal die C#-Grundlagen aneignen. Sonst wirst du immer nur frustriert sein, weil irgendwas nicht so funktioniert, wie du es dir vorstellst.

PS: Und mal ehrlich, warum stellst du eigentlich Fragen hier im Forum, wenn du dann alle Antworten und Ratschläge in den Wind schlägst? Dieser Thread ist von vor einem Jahr, und obwohl dir damals schon erklärt wurde, warum das überhaupt keinen Sinn ergibt, machst du es immer noch genauso: Binding geht verloren, statt sich zu aktualisieren
Weeks of programming can save you hours of planning
private Nachricht | Beiträge des Benutzers