2010-11-17 14 views
34

W oficjalnej dokumentacji Microsoft jest tylko jeden ustęp wspomnieć jak kontrole zachowują do klawiatury (przynajmniej to, co udało mi się znaleźć):Czy istnieje odniesienie do domyślnych zachowań klawiatury dla formantów Silverlight 4?

http://msdn.microsoft.com/en-us/library/cc189015(v=VS.95).aspx#inputting_text

wprowadzania tekstu i sterowania

Pewne elementy sterujące reagują do wydarzeń na klawiaturze z własną obsługą. Na przykład TextBox jest formantem zaprojektowanym do przechwytywania, a następnie wizualnego reprezentowania tekstu, który został wprowadzony przy użyciu klawiatury, i wykorzystuje KeyUp i KeyDown w swojej własnej logice do przechwytywania naciśnięć klawiszy, a następnie podnosi własne zdarzenie TextChanged, jeśli tekst faktycznie zmienione. Nadal można ogólnie dodać moduły obsługi dla funkcji KeyUp i KeyDown do obiektu TextBox lub dowolnego powiązanego formantu, który ma przetwarzać wprowadzanie tekstu. Jednak w ramach zamierzonego projektu kontrola może nie odpowiadać na wszystkie kluczowe wartości, które są do niej kierowane za pomocą kluczowych zdarzeń. Zachowanie jest specyficzne dla każdej kontroli. Na przykład ButtonBase (klasa podstawowa dla przycisku) przetwarza KeyUp, aby mógł sprawdzić klawisz SPACJA lub ENTER, który uważa za równoważny lewym przyciskiem myszy w celu podniesienia zdarzenia Click. To przetwarzanie zdarzenia odbywa się przez ButtonBase nadpisując wirtualną metodę OnKeyUp, aw jej implementacji ustawia Handled = true. W rezultacie każdy rodzic przycisku nasłuchującego zdarzenia kluczowego w przypadku SPACJA nie otrzyma zdarzenia już obsłużonego dla własnych procedur obsługi. Innym przykładem jest TextBox. Niektóre klawisze, takie jak klawisze STRZAŁEK, nie są uznawane za tekstowe przez TextBox i są uważane za specyficzne dla zachowania kontrolnego interfejsu użytkownika, a pole tekstowe oznacza te przypadki zdarzeń jako obsługiwane.

Niestandardowe elementy sterujące mogą implementować własne podobne zachowanie zastępujące kluczowe zdarzenia przez przesłonięcie OnKeyDown/OnKeyUp. Jeśli Twoja niestandardowa kontrola przetwarza określone klucze akceleracji lub ma kontrolę lub zachowanie skupienia podobne do scenariusza opisanego dla TextBox, powinieneś umieścić tę logikę we własnych nadpisaniach OnKeyDown/OnKeyUp.

Czy istnieje bardziej kompletne odniesienie w dowolnym miejscu?

Na przykład w AutoCompleteBox można poruszać się do sugestii, naciskając w górę/w dół i wybierz jedno naciśnięcie klawisza Enter, itp itd

pewnością nie musi być lepszy sposób niż koncentrując każdą kontrolę i naciskając każdy klawisz na klawiatura, aby się dowiedzieć :)

+0

Może pomogłoby to .... http: // www. dummies.com/how-to/content/silverlight-4-for-dummies-cheat-sheet.html – Aeonius

Odpowiedz

1

Sprawdź w kodzie źródłowym \ Reflektor.

Istnieje wiele dziwactw w przetwarzaniu tekstów kontrolnych, wątpię, że ktokolwiek będzie chciał to udokumentować. Na przykład zdarzenie KeyDown w TextBox nie jest uruchamiane, gdy użytkownik naciska BackSpace, gdy jest tekst wewnątrz kontroli, ale strzela, gdy nie ma tekstu itp. Najszybszym sposobem znalezienia sposobu działania jest wykopanie się w źródle.

Wymyśliłem fajną regułę: jeśli z jakiegoś powodu musisz wiedzieć, jak zachowa się jakaś kontrola, to w pewnej sytuacji nie trać czasu na próbowanie kodu (reprodukcji) tej sytuacji, po prostu pobierz Reflectora i spójrz na kod źródłowy .

+0

Zaznaczam to jako akceptowaną odpowiedź, ponieważ do tej pory jest to najbardziej niezawodny sposób, ale potajemnie mam nadzieję, że jest co najmniej kilka referencji od odbiorców ... :) – dain

1

Oto link do oficjalnych ms skróty, http://support.microsoft.com/kb/126449 tThey są dodawane do systemu Windows 8 http://www.itworld.com/software/203881/windows-8-metro-keyboard-shortcuts-and-tips nadzieję, że to pomaga

+0

To prawie wszystko :) Myślę, że kontrolki Silverlight są mniej lub bardziej zgodne z wytycznymi projektowania systemu Windows, więc jest to dobre myślenie, ale wydaje się, że to odniesienie ma bardziej globalne skróty klawiaturowe, a przede wszystkim kombinacje klawiszy :( – dain