Hjälp med WPF/C# och byta TextBlock content vid button.click

Trädvy Permalänk
Avstängd
Registrerad
Maj 2011

Hjälp med WPF/C# och byta TextBlock content vid button.click

Jag försöker göra ett flowchart, i frågeform ("ja eller nej"-frågor).
Detta ska då göras i WPF med C# (ej XAML).

Jag har då tänkt att ha ett TextBlock i mitten som ska innehålla varje ny fråga.
Och två Buttons nedtill, en med "ja" och en med "nej".

När man trycker på en Button så ersätts frågan (TextBlock) i mitten med en ny fråga (vilken fråga beror på vilken Button man klickade på)

Jag har dock helt låst mig och vet inte hur jag ska få till att det visas en ny fråga i mitten av mitt window.

Det är ju en sak att bara göra så här:

TextBlock question = new TextBlock { Text = "Is this a question?", FontSize = 20, TextAlignment = TextAlignment.Center }; mainGrid.Children.Add(question); Grid.SetColumn(question, 0); Grid.SetRow(question, 2); Grid.SetColumnSpan(question, 2);

Men att få detta block att visa ny fråga vid ett klick på en av knapparna, och sedan styra vilken fråga det blir, det är där jag kört fast.

Man kan ju lägga till

yes.Click += Yes_Click;

och

private void Yes_Click(object sender, RoutedEventArgs e) { }

För att få event på knapptryckningarna, men vet inte hur jag sak börja pussla ihop allt för att få till alla frågor, var de ska läggas, hur de ska styras till ett specifikt knapptryck osv...

(Jag har gjort denna flowchart i konsolen innan, i form av en rejäl bunt av console.writeline och IF-satser. men försöker nu alltså få till det i WPF istället)

Någon som kan försöka sig på att putta mig i rätt riktning?
(Det är inget prov, ingen inlämningsuppgift eller liknande. Helt enkelt bara mitt sätt att träna på WPF som är en del i kursen, för jag förstår i nuläget null)

Trädvy Permalänk
Medlem
Plats
Skövde
Registrerad
Okt 2011

@tqila: Hej! Jag kan testa i alla fall att putta lite åt rätt håll, var många år sedan jag satt med Web/WinForms/WPF så ta mitt svar med en nypa salt.

Men exempelvis i kodblocket som hanterar vad som sker vid klick på en knapp, så borde du direkt där bara kunna ha skiftet av texten som skall presenteras i textblocket. Exempelvis:

private void Yes_Click(object sender, RoutedEventArgs e) { question.Text = "This is another question"; }

I samma kodblock, lite beroende på hur din struktur ser ut överlag, borde du kunna ha en check för vilken fråga det är som besvaras, en enkel variabel som agerar räknare exempelvis då jag antar att svaren sparas in i en Array eller liknande.

int questionNumber = 1; private void Yes_Click(object sender, RoutedEventArgs e) { // Check för att kontrollera vilken fråga det gäller, sedan spara in fråga + tillhörande svar i en array // Slutligen uppdatera texten för nästa fråga question.Text = "This is another question"; }

EDIT: Jag utgår här från att TextBlock fungerar lite liknande som en Label, så kanske inte alls är fallet insåg jag, så som sagt en nypa salt till mitt svar.

EDIT 2: En till poäng här är att för "Nej-knappen" blir koden i princip densamma, att bryta ut hanteringen i en separat metod som kallas på kan vara bra, för att inte bryta mot DRY principen.

Vill du att jag besvarar något så kom ihåg att citera mitt inlägg! :)