So, dein MVVM-Tut-Beispiel-Projekt ist da - und da finde ich dieses Form als Programm-Einstieg:
Ich habs schon bischen verändert, nämlich dir Regions rausgeworfen, weil wenn ich eine Datei öffne, dann will ich den Code darin sehen - ich will nicht erst noch iwelche Regions aufklappen müssen.
Ist auch gar kein Problem - wie man sieht, passt der Code komplett selbst in kleine Editoren.
Region-Exkurs
Wie dem auch sei - im gezeigten Code finde ich kein MVVM, sondern finde ganz normales WinForms-Coding - und darin vor allem eine fehlende BePrefixung:
Die Klasse selbst heisst wie eine Methode - nämlich
Die Klasse
Wie gesagt: Bei mir wäre bereits die Klasse als Form kenntlich - die hiesse
Also mit Prefixen benamt nach meinem System sähe der Code so aus:
Wie man sieht: bis auf
Weiter kann ich mit der Solution nix anfangen, weil ich weiss nicht, was ich in frmInitialize eingeben muss, damit
VB.NET-Quellcode
- Public Class Initialize
- Public Shadows WithEvents Viewmodel As InitializeViewModel
- Public Sub New()
- InitializeComponent()
- Viewmodel = New InitializeViewModel
- Viewmodel.Initialize(Me)
- AddHandler MyFunctions.SaveClicked, AddressOf SaveClick
- End Sub
- Private Sub Initialize_Shown(sender As Object, e As EventArgs) Handles Me.Shown
- If Viewmodel.ConnectionCheck() Then
- Message.Text = "Verbindung aufgebaut"
- Message.ForeColor = Color.Lime
- Dim UserForm As New KratosUser
- UserForm.Show()
- Me.Close()
- End If
- End Sub
- Private Sub SaveClick()
- If Viewmodel.ConnectionCheck() Then
- Message.Text = "Verbindung aufgebaut"
- Message.ForeColor = Color.Lime
- Dim UserForm As New KratosUser
- UserForm.Show()
- Me.Close()
- Else
- Message.Text = "Verbindung konnte nicht hergestellt werden"
- Message.ForeColor = Color.Red
- End If
- End Sub
- End Class
Ist auch gar kein Problem - wie man sieht, passt der Code komplett selbst in kleine Editoren.
((Also die Regions bringen hier nix, ausser die erleichterte Möglichkeit, Code zu übersehen). Und wenn sie etwas brächten - etwa bei grossen Code-Dateien - dann wäre das eher ein Anzeichen fragwürdiger Architektur, dass da so grosse Dateien entstehen und unübersichtlich werden, dass man zu Regions neigen könnte.
Summe: Regions bringen fast nie was, denn wenn sie bringen würden, sollte man eher die Architekt nochmal angucken)
Summe: Regions bringen fast nie was, denn wenn sie bringen würden, sollte man eher die Architekt nochmal angucken)
Wie dem auch sei - im gezeigten Code finde ich kein MVVM, sondern finde ganz normales WinForms-Coding - und darin vor allem eine fehlende BePrefixung:
Message
sollte lbMessage
heissen, denn es ist keine Message, sondern ist ein Label
.Die Klasse selbst heisst wie eine Methode - nämlich
Initialize
. Tatsächlich ists aber ein Form
(also eine besondere Klasse, was ich beprefixen würde)Die Klasse
KratosUser
heisst ebenfalls wie eine Klasse, ist aber ein Form
. Hier wendest du wenigstens für das erstellte Objekt eine Kenntlichmachung an - zwar keinen Prefix, stattdessen aber einen Postfix: UserForm.Wie gesagt: Bei mir wäre bereits die Klasse als Form kenntlich - die hiesse
frmKratoUser
.Also mit Prefixen benamt nach meinem System sähe der Code so aus:
VB.NET-Quellcode
- Public Class frmInitialize
- Public Shadows WithEvents Viewmodel As InitializeViewModel
- Public Sub New()
- InitializeComponent()
- Viewmodel = New InitializeViewModel
- Viewmodel.Initialize(Me)
- AddHandler pnlFunctions.SaveClicked, AddressOf SaveClick
- End Sub
- Private Sub Initialize_Shown(sender As Object, e As EventArgs) Handles Me.Shown
- If Viewmodel.ConnectionCheck() Then
- txtMessage.Text = "Verbindung aufgebaut"
- txtMessage.ForeColor = Color.Lime
- Dim frm = New frmKratosUser
- frm.Show()
- Me.Close()
- End If
- End Sub
- Private Sub SaveClick()
- If Viewmodel.ConnectionCheck() Then
- txtMessage.Text = "Verbindung aufgebaut"
- txtMessage.ForeColor = Color.Lime
- Dim frm = New frmKratosUser
- frm.Show()
- Me.Close()
- Else
- txtMessage.Text = "Verbindung konnte nicht hergestellt werden"
- txtMessage.ForeColor = Color.Red
- End If
- End Sub
- End Class
Viewmodel
ist jedes Objekt beprefixt, weil es sind alles Controls. Auch das FunctionPanel
- das hab ich nur durch Zufall mitgekriegt, dass das ja auch ein Control ist - das hiess ja vorher MyFunctions
.Weiter kann ich mit der Solution nix anfangen, weil ich weiss nicht, was ich in frmInitialize eingeben muss, damit
frmKratoUser
gültige Daten hat und geöffnet wird.