Autor Beitrag
dark-destination1988
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 178
Erhaltene Danke: 21



BeitragVerfasst: Do 11.08.11 16:08 
Moin,
also die Logik von dem View zu trennen ist im Prinzip klar, aber was darf dann noch im View stehen. Ist es Ok, checkbox.IsChecked abzufragen, und je nachdem unterschiedliche Funktionen aufzurufen? Oder ist es Ok ein DataGridView nach der Zuweisung der DataSource im Codebehind zu formatieren(zum Beispiel die Farbe verschiedener Spalten zu ändern oder ähnliches?). Vorher hatte ich mit Silverlight gearbeitet und das hat mit dem MVVM ganz gut geklappt, zurzeit bin ich wieder bei Winforms und stelle mich dieser Frage. Sollte der Codebehind wirklich nur aus dem Aufruf einer Funktion bestehen? Oder ist auch schon ein wenig Logik abarbeitung möglich? Beispielsweise müsste ich das Datagridview in meine Klasse "reinreichen" um diese zu formatieren (jenachdem welcher wert nun drin steht?
bakachan
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 503
Erhaltene Danke: 34

W7 (x64) Ultimate
C# / VB.NET (VS2010 Ultimate)
BeitragVerfasst: Do 11.08.11 16:12 
Formatieren der Ausgabe gehört eigentlich nicht zu Klassenlogik ist also auf der UI-Ebene richtig angesiedelt.
dark-destination1988 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 178
Erhaltene Danke: 21



BeitragVerfasst: Do 11.08.11 16:18 
und so abarbeitungen wie
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
if(checkbox1.Checked)
{
funktion1();
}
else
{
funktion2();
}
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4798
Erhaltene Danke: 1059

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Do 11.08.11 16:53 
Hallo,

sollte das jetzt eine Frage sein?

Wenn ja, dann lautet die Antwort: it depends ;-)

Wenn die Funktionen wiederum nur zur Logik gehören, könntest du ja auch in der Logik-Klasse eine Methode
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
void DoIt(bool bChecked) // in Produktivcode einen sinnvolleren Namen wählen ;-)
{
  if (bChecked)
  {
    funktion1();
  }
  else
  {
    funktion2();
  }
}

anbieten und dann einfach nur in der GUI per
ausblenden C#-Quelltext
1:
logic.DoIt(checkbox1.Checked);					

aufrufen.

Ich halte es eigentlich immer so, daß meine GUI-Methoden so klein wie möglich sind.
dark-destination1988 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 178
Erhaltene Danke: 21



BeitragVerfasst: Fr 12.08.11 07:50 
und wie machst du das wenn du anhand von dem rückgabewert mehrere usercontrols setzen musst?
ich würde das in den codebehind machen etwa so
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
int ret=obj.FunktionMitRückGabewert()
switch(ret)
{
case 1
//hier setze ich usercontrols
break:
case 2:
//hier setze ich die usercontrols anders als bei 1
break;
case 3
//hier setze ich die user controls wieder anders
break;
}

Ist es den sinnvoll die checkboxen textboxen in eine Klasse zu reichen? Oder sollte man das setzen der Controls im Codebehind "erledigen".
anderes beispiel wäre
der nutzer setzt ein Datum (zum Beispiel Datepicker) ich rufe die Value_changed methode auf in der ich zum beispiel überprüfe ob das datum größer ist als vorgestern. wenn ja dann setze ich das datum auf vorgestern, andern falls bleibt es so, ich finde so eine überprüfung auch nicht sinnvoll in eine separate funktion zu packen, da das mehr codezeilen brauch als ein simples
ausblenden C#-Quelltext
1:
if(dateTimepicker.Value>(DateTime.Now+new TimeSpan(2,0,0,0)