C# Langjähriger Computerbase User braucht Unterstützung bei Visual Studio CheckBoxen

isostar2

Lieutenant
Registriert
Dez. 2008
Beiträge
952
Hey, ich bin jetzt schon seit über 8 Jahren User von Computerbase und in dieser Zeit konnte ich Zahlreiche Hilfestellungen und Tipps geben, aber jetzt brauche ich mal eure Hilfe.

Ich hab bei Visual Studio 2015 eine kleine WPF-Application geschrieben, zuerst hab ich eine Liste erstellt (siehe Foto) mit verschiedenen Gerichten die sich in Vegetarisch, Nicht Vegetarisch sowie in Frühstück, Mittagessen und Abendessen, sowie im Datum (hab nur 2 Tage Beispielhaft genommen) unterscheiden.

Dann hab ich dummerweise in einem neuem Programm ein Design erstellt mit CheckBox, DataPicker sowie Button um die Liste Filtern zu können.

Und jetzt komm ich nicht mehr weiter :( im Gründe möchte einfach nur wenn die App ausgeführt wird und jemand zb. Nicht Vegetarisch und Frühstück anklickt das dann zb. Wurst mit Brot ausgeben wird sobald man auf den Button klickt.

Screenshot (77).png

Screenshot (78).png
 
Sorry, dass ich das sagen muss: Was du hier programmierst hat mit WPF nicht viel zu tun. Du nimmst die Komplexität von WPF in Kauf ohne von den Vorteilen der WPF zu profitieren.

Warum schreibst du das dann nicht in Windows Forms. Weniger Code, deutlich einfacher zu designende Oberfläche und sehr wahrschneinlich hättest du keine Probleme...

@Edit: Ich habe anhand deiner Oberfläche und deines Codes nichts gesehen, was in Window Forms nicht auch machbar ist. Nur deutlich einfacher...

greetz
hroessler
 
Zuletzt bearbeitet von einem Moderator:
Also zum einen erstellst du eine Liste mit den Menüs als Attribut, was schonmal gut ist. Allerdings packst du die Menüs in ein Array um dann alles in die Liste zu kopieren. Lass das Array weg und füg es direkt der Liste hinzu.
So damit du jetzt das Menü anzeigen lassen kannst, brauchst du für den Button "Menü anzeigen" ein click_event, welches sich entweder im Designer hinzufügen lässt oder du müsstest googlen. Dort drin fragst du die Zustände der Checkboxen ab und suchst dann in einer schleife, auf welches Menü die angeklickten Zustände trifft und gibst es aus.
 
Wir das Layout in der InitializeCoomponent() Funktion auch zur Initialisierung der App verwendet?

Um den Button "verwenden" zu können musst du es mit einem Event verbinden.

Bei deinem Button fügst du Click="button_Click" hinzu

Code:
<Button x:Name="button" Content="Button" HorizontalAlignment="Left" Margin="238,150,0,0" VerticalAlignment="Top" Width="75" Click="button_Click"/>

und schreibst die button_Click Funktion

Code:
private void button_Click(object sender, RoutedEventArgs e)
{
      MessageBox.Show("Button Click", "Event", MessageBoxButton.OK);
}
 
Zuletzt bearbeitet:
bull123 schrieb:
Wir das Layout in der InitializeCoomponent() Funktion auch zur Initialisierung der App verwendet?

Um den Button "verwenden" zu können musst du es mit einem Event verbinden.

Bei deinem Button fügst du Click="button_Click" hinzu

Code:
<Button x:Name="button" Content="Button" HorizontalAlignment="Left" Margin="238,150,0,0" VerticalAlignment="Top" Width="75" Click="button_Click"/>

und schreibst die button_Click Funktion

Code:
private void button_Click(object sender, RoutedEventArgs e)
{
      MessageBox.Show("Button Click", "Event", MessageBoxButton.OK);
}

Das Funktioniert alles soweit:
Screenshot (79).png

Musste aber das Design und die CheckBoxen nochmal neumachen, beim Ausführen der App wurde sie aus irgendeinem Grund verzerrt dargestellt. Aber für euch grad nicht so wichtig.

Hab die Checkboxen nochmal umbenannt:

CheckBox1 = Vegetarisch
CheckBox2 = Nicht Vegetarisch
CheckBox3 = Frühstück
CkeckBox4 = Mittagessen
CkeckBox5 = Abendessen

Jetzt möchte ich eigentlich nur noch erreichen Falls zum Beispiel CheckBox1 und CheckBox2 und 07.06.2016 ausgewählt werden, soll "Müsli mit Milch" ausgeben werden, da steh ich grad auf dem Schlauch.
 
Servus,

Ooookay... also es gibt sicher ein Haufen Tipps die man geben kann, aber es fängt halt jeder klein an. Zuerst einmal bezüglich dem WPF Part, versuche dein Zeug besser nicht so starr festzulegen. Eher so:
Code:
<Border Margin="10" BorderBrush="Gray" BorderThickness="2">
   <StackPanel Margin="2">
       <RadioButton Content="Vegetarisch"/>
       <RadioButton Content="Nicht Vegetarisch" IsChecked="True"/>
   </StackPanel>
</Border>
RadioButton empfiehlt sich ggf. eher als Checkbox, weil das eine das andere ausschließt. Bei Radioboxen ist nur eins Checked, bei allen anderen isChecked.Value = false (glaube das war bool? nicht 100% sicher). Wenn du die Gruppen in je ein StackPanel packst ist der Datenkontext auch direkt so wie du ihn haben möchtest.

Des weiteren musst du nicht erst ein Array erstellen und das dann einer Liste zuordnen. Du kannst das genauso wie du es beim Array auch bei einer Liste machen.

Beim checken kannst du entweder traditionell deine Liste durchgehen oder auf LINQ zurückgreifen. Zum Beispiel
Code:
var result = rezeptListe.FirstOrDefault(x => x.Date == _DatePicker.SelectedDate && x.Vegi == _radioButtonVegi.IsChecked /* usw */)

Des weiteren wenn du in der Klasse eine Datum speichern willst, tue dies als DateTime, denn den Typ bekommst du auch vom DatePicker. Ggf. willst du auch die Tageszeit mit einem enum beschreiben, dass wird etwas übersichtlicher :).

Hoffe das hilft erst mal ein bisschen ;) viel spaß beim hacken...
 
Zuletzt bearbeitet:
Zurück
Oben