2012-04-15 15 views
0

Edit: Ich habe die Zuordnung falsch gelesen .... Keine Event-Handler, weil er nicht will, dass wir weiter arbeiten, wir sind nur um eine Reihe von Daten an Steuerelemente zu binden, um angezeigt zu werden.WPF ohne Event-Handler

Kleines Problem mit den Hausaufgaben in wpf. Wir arbeiten bei jeder Arbeit an einem Programm, wir haben gerade eine Bindung. Der Benutzer gibt Daten in eine Textbox ein und zeigt zwei Datensätze in zwei Datarits an. Im Moment ist das, was angezeigt wird, hart codiert, anstatt es aus einer Datenbank zu ziehen. Ich kann es bekommen, um die Daten anzuzeigen, und ich kann es bekommen, um die korrekten Daten anzuzeigen, die auf der Textboxeingabe basieren, aber wir dürfen nicht Ereignishandler benutzen. Wie kann also ein Button-Klick ohne Event-Handler gelesen werden?

Ich kann die Textbox und den Titel des Fensters binden, so ändert es sich, wie der Text innerhalb des Textfelds geändert wird, aber ich kann nicht bekommen, was in der Textbox ist. Es ist möglich, dass ich etwas im Buch übersehen habe, aber ich sehe nicht, wie dies ohne Event-Handler für den Button möglich ist.

+0

Wie wäre Befehl an die Schaltfläche Hinzufügen? –

+0

Wenn das Textfeld gebunden ist, dann holen Sie sich einfach den Wert aus der Eigenschaft. Was soll der Knopf tun? – Paparazzi

Antwort

0

Wenn Sie keine Ereignisse verwenden dürfen und nicht benötigt, um einen Knopf in Ihrer Schnittstelle zu verwenden, dann sind Befehle definitiv der Weg zu gehen.

Tatsächlich sind Befehle seit der Veröffentlichung von WPF die bevorzugte Lösung für die Interaktion über Ereignisse. Da ich hauptsächlich mit MVVM arbeite, kann ich mich nicht an das letzte Mal erinnern, als ich mich an einem Button Event beteiligt habe.

Auch jede andere Art der Verknüpfung Ihrer Schaltfläche mit einer Interaktion wäre ein schmutziger Hack.

Vielleicht ist es ein bisschen wie ein Schritt nach vorn in die Kurse, aber es immer noch lesenswert: http://msdn.microsoft.com/en-gb/magazine/cc785480.aspx

+0

Wir kommen nächste Woche in die Befehle. –

1

Sie können das Datagrid auf 2 Dinge multibind: Ihre Quelldaten und das Textfeld. Im Konverter können Sie den Inhalt der Textbox analysieren und den richtigen Teil der anzuzeigenden Daten auswählen.

+0

Aber das macht den benötigten Knopf nutzlos, oder? Ich muss auf den Button klicken, aber ich kann keinen Event-Handler verwenden. –

+0

ja. Aber ist der Knopf ein Teil der Aufgabe? vielleicht kannst du ohne es tun? – Vlad

+0

Ja, die Schaltfläche ist in der Benutzeroberfläche erforderlich. Event-Handler können nicht verwendet werden, da sie noch nicht behandelt wurden, obwohl wir sie in der vorausgesetzten C# -Klasse gelernt haben. Befehle wurden noch nicht behandelt. Ich sehe keinen Weg, dies zu tun. –

2

Eine andere Möglichkeit ist, einen Knopf zu einem Befehl zu binden, das ist, was wirklich das Ereignis

<Button Command="{Binding ViewModel.YourCommand}" 

<Button Command="{Binding ViewModel.Cmd}" CommandParameter="{Binding ViewModel.CmdParam}"/> 

Die im Ansichtsmodell ersetzt, Sie alle Logik zu tun. Obwohl Sie den Befehl in YourView.xaml.cs setzen könnten, hängt das von Ihrem MVVM-Design ab (dh wenn Sie denken, dass diese Funktionalität nicht in das ViewModel gehört)

+0

Er hat nicht speziell gesagt, dass wir das nicht tun könnten, aber der Grund, warum wir keine Event-Handler verwenden konnten, ist, dass er nicht mehr auf die Datenbindung setzen und Event-Handler, Befehle oder löst noch aus. Es scheint eher ein Versuch zu sein, uns davon abzuhalten, das Projekt abzuschließen und dann zu löschen, was wir nicht brauchen, wenn wir unsere Fortschritte für die Woche einreichen. Ich werde nächste Woche damit spielen. –

+0

Befehle sollen solche Ereignisse ersetzen, um eine lose Kopplung zwischen ViewModel und View zu ermöglichen. –

+0

Wir kommen nächste Woche dazu. –