| 

.NET C# Java Javascript Exception

3
Pfff, irgendwie habe ich heute kein Glück mit Google, nur schlechte Suchergebnisse zu diesem Thema, die mir nicht weiterhelfen...

...daher hier: :-)


Wie kann man in einer Windows Phone 7 Silverlight-Anwendung einer TextBox einen Default-Button zuweisen, der angewendet wird, wenn man die Eingabe in der TextBox mit Enter über die (virtuelle) Tastatur abschließt, damit der Anwender nicht noch nach Eingabe seines Textes zusätzlich auf die entsprechende Schaltfläche klicken muss?

Typisches Szenario: Suchstring in Suchbox eingeben, Enter drücken, Suchergebnisse sollen erscheinen, User soll nicht noch extra auf "suchen" klicken müssen.

In ASP.NET kann man sowas über den "DefaultButton" eines Panels oder Form realisieren. Wie geht's in WP7 / Silverlight?
News:
04.05.2011
Achso 340 1 6
Achso 340 1 6
3 Antworten
0
Okay, nachdenken hilft. :-)

Ich hab's jetzt wie folgt implementiert und scheint zu klappen. Vordefinierte Funktionalität hierfür hab ich nämlich trotz intensiver Suche nicht gefunden, was dafür spricht, dass es diese nicht gibt.

Einfach auf das KeyUp-Ereignis der TextBox reagieren, nachgucken ob's die Enter-Taste ist und ggf. auf die gewünschte Click-Methode des "Default-Buttons" weiterleiten:

private void MyTextBox_KeyUp(object sender, KeyEventArgs e)
{
if (e.Key == Key.Enter)
{
MyButton_Click(sender, e);
}
}
private void MyButton_Click(object sender, System.Windows.RoutedEventArgs e)
{
// Your action...
}


Nix Spezielles also, scheint auch nichts dagegen zu sprechen, es so zu machen. Wenn doch alles so einfach wäre...

PS: Krieg ich dann bald das "Autodidakt-Abzeichen"? ;-)
04.05.2011
Achso 340 1 6
0
;)
Also sowas wie einen Default Button bei der Textbox gibt es nicht.
Aber wie do schon richtig gesagt hast, du kannst dich ja einfach auf die gleiche Methode hengen.
Wobei ich dir empfehlen würde, die Methode aus dem MyButton_Click zu extrahieren und dann diese auszuführen.
Sprich:
private void MyTextBox_KeyUp(object sender, KeyEventArgs e)
{
if (e.Key == Key.Enter)
{
MethodeXY();
}
}
private void MyButton_Click(object sender, System.Windows.RoutedEventArgs e)
{
MethodeXY();
}
private void MethodeXY()
{
//Das was jetzt im MyButton_Click getan wird
}


Dies ist einfach schöner, als wenn du dich dann direkt auf MyButton_Click hengst, ausserdem brauchst du vermutlich den sender und die eventargs nicht.
Ps: Geht die weiterleitung von KeyEventArgs auf RoutedEventArgs überhaupt? Ich behaupte mal nicht ;)
05.05.2011
Voi 216 3
Doch geht! KeyEventArgs lässt sich implizit auf RoutetEventArgs casten, hab auch erst gestutzt. Und den sender kann man natürlich auch durchreichen, wenn man mag. Mit dem Auslagern in eine Methode hast natürlich recht, ich hab's oben auch nur vereinfacht dargestellt. Hängt ja auch vom jeweiligen Szenario ab...
Achso 05.05.2011
Ok ;)
Hab grad geschaut, RoutedEventArgs erbt von EventArgs.
Jedoch könnte man ein Problem haben wenn man auf etwas von RoutedEventArgs zugreifen will, was eigentlich nur ein EventArg ist, weil es von dem KeyUp Event kommt.
;) Einfach unschön ohne extraktion ;)
Voi 05.05.2011
0
Sry sollte ein Kommentar werden...
05.05.2011
Voi 216 3

Stelle deine .net-Frage jetzt!