Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Nawigacja za pomocą fokusu umożliwia zapewnienie kompleksowych i spójnych doświadczeń interakcji w aplikacjach systemu Windows i niestandardowych kontrolkach dla użytkowników korzystających z klawiatury, osób niepełnosprawnych oraz innych potrzeb związanych z dostępnością, a także 10-stopowego doświadczenia ekranów telewizyjnych i konsoli Xbox One.
Przegląd
Nawigacja fokusu odnosi się do podstawowego mechanizmu, który umożliwia użytkownikom nawigację i interakcję z interfejsem użytkownika aplikacji systemu Windows przy użyciu klawiatury, gamepada lub zdalnego sterowania.
Uwaga / Notatka
Urządzenia wejściowe są zwykle klasyfikowane jako urządzenia wskazujące, takie jak touch, touchpad, pióro i mysz oraz urządzenia nie wskazujące, takie jak klawiatura, gamepad i zdalne sterowanie.
W tym temacie opisano sposób optymalizacji aplikacji systemu Windows i tworzenia niestandardowych doświadczeń interakcji dla użytkowników korzystających z typów wejściowych niewymagających wskazywania.
Mimo że skupiamy się na danych wejściowych klawiatury dla kontrolek niestandardowych w aplikacjach systemu Windows na komputerach, dobrze zaprojektowane środowisko klawiatury jest również ważne dla klawiatur oprogramowania, takich jak klawiatura dotykowa i klawiatura ekranowa (OSK), obsługa narzędzi ułatwień dostępu, takich jak Narrator systemu Windows i obsługa środowiska 10 stóp.
Zobacz Handle pointer input (Obsługa danych wejściowych wskaźnika), aby uzyskać wskazówki dotyczące tworzenia niestandardowych środowisk w aplikacjach systemu Windows dla urządzeń wskazujących.
Aby uzyskać więcej ogólnych informacji na temat tworzenia aplikacji i środowisk klawiatury, zobacz Interakcja z klawiaturą.
Ogólne wskazówki
Tylko te elementy interfejsu użytkownika, które wymagają interakcji użytkownika, powinny obsługiwać nawigację fokusu, elementy, które nie wymagają akcji, takie jak obrazy statyczne, nie wymagają fokusu klawiatury. Czytniki zawartości ekranu i podobne narzędzia ułatwień dostępu nadal ogłaszają te elementy statyczne, nawet jeśli nie są one uwzględnione w nawigacji fokusu.
Należy pamiętać, że w przeciwieństwie do nawigacji za pomocą urządzenia wskaźnika, takiego jak mysz lub dotyk, nawigacja fokusu jest liniowa. Podczas implementowania nawigacji fokusu należy wziąć pod uwagę sposób interakcji użytkownika z aplikacją i logiczną nawigację. W większości przypadków zalecamy niestandardowe zachowanie nawigacji fokusu zgodnie z preferowanym wzorcem odczytu kultury użytkownika.
Niektóre inne zagadnienia dotyczące nawigacji fokusu obejmują:
- Czy kontrolki są grupowane logicznie?
- Czy istnieją grupy kontrolek o większym znaczeniu?
- Jeśli tak, czy te grupy zawierają podgrupy?
- Czy układ wymaga niestandardowej nawigacji kierunkowej (strzałek) i kolejności tabulacji?
Książka elektroniczna Engineering Software for Accessibility (Oprogramowanie inżynieryjne do ułatwień dostępu ) zawiera doskonały rozdział dotyczący projektowania hierarchii logicznej.
Nawigacja kierunkowa 2D dla klawiatury
Wewnętrzny obszar nawigacji 2D kontrolki lub grupy kontrolnej jest określany jako "obszar kierunkowy". Gdy fokus przesuwa się do tego obiektu, klawisze strzałek klawiatury (w lewo, w prawo, w górę i w dół) mogą służyć do nawigowania między elementami podrzędnymi we wskazanym kierunku.
2D Wewnętrzny obszar nawigacji lub obszar kierunkowy grupy kontrolnej
Możesz użyć właściwości XYFocusKeyboardNavigation (która ma możliwe wartości Auto, Włączone lub Wyłączone), aby zarządzać nawigacją wewnętrzną 2D za pomocą strzałek klawiatury.
Uwaga / Notatka
Kolejność tabulacji nie ma wpływu na tę właściwość. Aby uniknąć mylącego środowiska nawigacji, zalecamy, aby elementy podrzędne obszaru kierunkowego nie zostały jawnie określone w kolejności nawigacji po kartach aplikacji. Zobacz właściwości UIElement.TabFocusNavigation i TabIndex , aby uzyskać więcej szczegółowych informacji na temat zachowania tabulatora dla elementu.
Automatyczne (zachowanie domyślne)
W przypadku ustawienia automatycznego zachowanie nawigacji kierunkowej jest określane przez pochodzenie elementu lub hierarchię dziedziczenia. Jeśli wszyscy przodkowie są w trybie domyślnym (ustawionym na Auto), nawigacja kierunkowa za pomocą klawiatury nie jest obsługiwana.
Wyłączony
Ustaw XYFocusKeyboardNavigation na Wyłączone aby zablokować nawigację kierunkową do kontrolki i jej elementów podrzędnych.
Zachowanie po wyłączeniu XYFocusKeyboardNavigation
W tym przykładzie podstawowy StackPanel (ContainerPrimary) ma ustawioną wartość XYFocusKeyboardNavigation na wartość Włączone. Wszystkie elementy podrzędne dziedziczą to ustawienie i można przejść do nich za pomocą klawiszy strzałek. Jednak elementy B3 i B4 znajdują się w pomocniczym elemencie StackPanel (ContainerSecondary) z ustawioną opcją XYFocusKeyboardNavigation na Disabled, co zastępuje kontener podstawowy i wyłącza nawigację za pomocą klawiszy strzałek do niego i między jego elementami podrzędnymi.
<Grid
Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"
TabFocusNavigation="Cycle">
<Grid.RowDefinitions>
<RowDefinition Height="40"/>
<RowDefinition Height="75"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<TextBlock Name="KeyPressed"
Grid.Row="0"
FontWeight="ExtraBold"
HorizontalTextAlignment="Center"
TextWrapping="Wrap"
Padding="10" />
<StackPanel Name="ContainerPrimary"
XYFocusKeyboardNavigation="Enabled"
KeyDown="ContainerPrimary_KeyDown"
Orientation="Horizontal"
BorderBrush="Green"
BorderThickness="2"
Grid.Row="1"
Padding="10"
MaxWidth="200">
<Button Name="B1"
Content="B1"
GettingFocus="Btn_GettingFocus" />
<Button Name="B2"
Content="B2"
GettingFocus="Btn_GettingFocus" />
<StackPanel Name="ContainerSecondary"
XYFocusKeyboardNavigation="Disabled"
Orientation="Horizontal"
BorderBrush="Red"
BorderThickness="2">
<Button Name="B3"
Content="B3"
GettingFocus="Btn_GettingFocus" />
<Button Name="B4"
Content="B4"
GettingFocus="Btn_GettingFocus" />
</StackPanel>
</StackPanel>
</Grid>
Enabled
Ustaw XYFocusKeyboardNavigation na Włączone, aby obsługiwać nawigację kierunkową 2D do kontrolki i każdego z obiektów podrzędnych UIElement.
Po ustawieniu nawigacja za pomocą strzałek jest ograniczona do elementów w obszarze kierunkowym. Nie ma to wpływu na nawigację przy użyciu klawisza Tab, ponieważ wszystkie kontrolki pozostają dostępne za pośrednictwem ich hierarchii kolejności tabulacji.
Włączone zachowanie nawigacji klawiatury XYFocus
W tym przykładzie podstawowy StackPanel (ContainerPrimary) ma ustawioną wartość XYFocusKeyboardNavigation na wartość Włączone. Wszystkie elementy podrzędne dziedziczą to ustawienie i można przejść do nich za pomocą klawiszy strzałek. Elementy B3 i B4 znajdują się w pomocniczym StackPanel (ContainerSecondary), gdzie XYFocusKeyboardNavigation nie jest ustawiony, co następnie dziedziczy ustawienie głównego kontenera. Element B5 nie znajduje się w zadeklarowanym obszarze kierunkowym i nie obsługuje nawigacji za pomocą strzałek, ale obsługuje standardowe zachowanie nawigacji tabulatorem.
<Grid
Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"
TabFocusNavigation="Cycle">
<Grid.RowDefinitions>
<RowDefinition Height="40"/>
<RowDefinition Height="100"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<TextBlock Name="KeyPressed"
Grid.Row="0"
FontWeight="ExtraBold"
HorizontalTextAlignment="Center"
TextWrapping="Wrap"
Padding="10" />
<StackPanel Grid.Row="1"
Orientation="Horizontal"
HorizontalAlignment="Center">
<StackPanel Name="ContainerPrimary"
XYFocusKeyboardNavigation="Enabled"
KeyDown="ContainerPrimary_KeyDown"
Orientation="Horizontal"
BorderBrush="Green"
BorderThickness="2"
Padding="5" Margin="5">
<Button Name="B1"
Content="B1"
GettingFocus="Btn_GettingFocus" Margin="5" />
<Button Name="B2"
Content="B2"
GettingFocus="Btn_GettingFocus" />
<StackPanel Name="ContainerSecondary"
Orientation="Horizontal"
BorderBrush="Red"
BorderThickness="2"
Margin="5">
<Button Name="B3"
Content="B3"
GettingFocus="Btn_GettingFocus"
Margin="5" />
<Button Name="B4"
Content="B4"
GettingFocus="Btn_GettingFocus"
Margin="5" />
</StackPanel>
</StackPanel>
<Button Name="B5"
Content="B5"
GettingFocus="Btn_GettingFocus"
Margin="5" />
</StackPanel>
</Grid>
Można mieć wiele poziomów zagnieżdżonych obszarów wytyczonych kierunkowo. Jeśli wszystkie elementy nadrzędne mają ustawioną wartość XYFocusKeyboardNavigation na wartość Włączone, wewnętrzne granice regionów nawigacji są ignorowane.
Oto przykład dwóch zagnieżdżonych obszarów kierunkowych w elemecie, który nie obsługuje jawnie nawigacji kierunkowej 2D. W takim przypadku nawigacja kierunkowa nie jest obsługiwana między dwoma zagnieżdżonymi obszarami.
XYFocusKeyboardNavigation włączone i zachowanie zagnieżdżone
Oto bardziej złożony przykład pokazujący trzy zagnieżdżone obszary kierunkowe, w których:
- Gdy B1 ma fokus, można przejść tylko do B5 (lub odwrotnie), ponieważ istnieje granica obszaru nawigacji kierunkowej, gdzie XYFocusKeyboardNavigation ustawiono na Disabled, co sprawia, że B2, B3 i B4 są nieosiągalne za pomocą strzałek.
- Gdy B2 ma fokus, można nawigować tylko do B3 (i odwrotnie), ponieważ granicą strefy kierunkowej uniemożliwia nawigację klawiszami strzałek do B1, B4 i B5
- Gdy B4 ma fokus, Tab musi być używany do nawigowania między kontrolkami
XYFocusKeyboardNavigation włączony i złożone zachowanie zagnieżdżone
Nawigacja na karcie
Podczas gdy klawiszy strzałek można używać do nawigacji kierunkowej 2D wewnątrz kontrolki lub grupy kontrolnej, klawisz Tab można używać do nawigowania między wszystkimi kontrolkami w Aplikacji Systemu Windows.
Wszystkie kontrolki interaktywne domyślnie obsługują nawigację za pomocą klawisza Tab (właściwości IsEnabled i IsTabStop mają wartość true), z logiczną kolejnością tabulatora pochodzącą z układu kontrolek w aplikacji. Jednak kolejność domyślna nie musi odpowiadać kolejności wizualizacji. Rzeczywiste położenie wyświetlania może zależeć od kontenera układu nadrzędnego i niektórych właściwości, które można ustawić na elementach podrzędnych, aby wpłynąć na układ.
Unikaj niestandardowej kolejności tabulacji, która sprawia, że uwaga przeskakuje w aplikacji. Na przykład lista kontrolek w formularzu powinna mieć kolejność tabulacji przepływającą od góry do dołu i od lewej do prawej (w zależności od ustawień regionalnych).
W tej sekcji opisano, jak można w pełni dostosować tę kolejność zakładek, aby odpowiadała wymogom Twojej aplikacji.
Ustaw zachowanie nawigacji na karcie
Właściwość TabFocusNavigationelementu UIElement określa zachowanie nawigacji na karcie dla całego drzewa obiektów (lub obszaru kierunkowego).
Uwaga / Notatka
Użyj tej właściwości zamiast właściwości Control.TabNavigation dla obiektów, które nie używają kontrolki ControlTemplate do zdefiniowania ich wyglądu.
Jak wspomniano w poprzedniej sekcji, aby uniknąć mylącego doświadczenia nawigacyjnego, zalecamy, aby elementy podrzędne obszaru kierunkowego nie były jawnie określone w kolejności nawigacji zakładek aplikacji. Zobacz właściwości UIElement.TabFocusNavigation i TabIndex , aby uzyskać więcej szczegółów na temat zachowania tabulatora dla elementu.
W przypadku wersji starszych niż Windows 10 Creators Update (kompilacja 10.0.15063) ustawienia karty były ograniczone do obiektów ControlTemplate . Aby uzyskać więcej informacji, zobacz Control.TabNavigation.
TabFocusNavigation ma wartość typu KeyboardNavigationMode z następującymi możliwymi wartościami (należy pamiętać, że te przykłady nie są niestandardowymi grupami kontrolek i nie wymagają nawigacji wewnętrznej za pomocą strzałek):
Lokalne (domyślne) indeksy zakładek są rozpoznawane w poddrzewie wewnątrz kontenera. W tym przykładzie kolejność tabulacji to B1, B2, B3, B4, B5, B6, B7, B1.
Zachowanie nawigacji na karcie "Lokalne"
Zachowanie nawigacji na zakładce "Lokalne"
Raz Kontener i wszystkie elementy podrzędne otrzymują fokus raz. W tym przykładzie kolejność tabulacji to B1, B2, B7, B1 (wewnętrzna nawigacja za pomocą strzałki jest również pokazana).
Zachowanie nawigacyjne karty "Jednorazowa"
Cykl
Fokus wraca do początkowego elementu fokusu wewnątrz kontenera. W tym przykładzie kolejność tabulacji to B1, B2, B3, B4, B5, B6, B2...
Zachowanie nawigacji w zakładce "Cykl"
Oto kod dla wcześniejszych przykładów (z TabFocusNavigation="Cycle").
<Grid
Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"
TabFocusNavigation="Cycle">
<Grid.RowDefinitions>
<RowDefinition Height="40"/>
<RowDefinition Height="300"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<TextBlock Name="KeyPressed"
Grid.Row="0"
FontWeight="ExtraBold"
HorizontalTextAlignment="Center"
TextWrapping="Wrap"
Padding="10" />
<StackPanel Name="ContainerPrimary"
KeyDown="Container_KeyDown"
Orientation="Horizontal"
HorizontalAlignment="Center"
BorderBrush="Green"
BorderThickness="2"
Grid.Row="1"
Padding="10"
MaxWidth="200">
<Button Name="B1"
Content="B1"
GettingFocus="Btn_GettingFocus"
Margin="5"/>
<StackPanel Name="ContainerSecondary"
KeyDown="Container_KeyDown"
XYFocusKeyboardNavigation="Enabled"
TabFocusNavigation ="Cycle"
Orientation="Vertical"
VerticalAlignment="Center"
BorderBrush="Red"
BorderThickness="2"
Padding="5" Margin="5">
<Button Name="B2"
Content="B2"
GettingFocus="Btn_GettingFocus"
Margin="5"/>
<Button Name="B3"
Content="B3"
GettingFocus="Btn_GettingFocus"
Margin="5"/>
<Button Name="B4"
Content="B4"
GettingFocus="Btn_GettingFocus"
Margin="5"/>
<Button Name="B5"
Content="B5"
GettingFocus="Btn_GettingFocus"
Margin="5"/>
<Button Name="B6"
Content="B6"
GettingFocus="Btn_GettingFocus"
Margin="5"/>
</StackPanel>
<Button Name="B7"
Content="B7"
GettingFocus="Btn_GettingFocus"
Margin="5"/>
</StackPanel>
</Grid>
TabIndex
Użyj kontrolki TabIndex , aby określić kolejność, w jakiej elementy otrzymują fokus, gdy użytkownik przechodzi przez kontrolki przy użyciu Tab. Kontrolka z niższym indeksem tabulacji otrzymuje fokus przed kontrolką z wyższym indeksem.
Jeśli kontrolka nie ma określonej wartości TabIndex, ma przypisaną wyższą wartość indeksu niż bieżąca najwyższa wartość indeksu (i najniższy priorytet) wszystkich kontrolek interakcyjnych w drzewie wizualnym w ramach danego zakresu.
Wszystkie elementy podrzędne kontrolki są uznawane za zakres, a jeśli jeden z tych elementów ma również elementy podrzędne, są uważane za inny zakres. Wszelkie niejednoznaczności są rozwiązywane poprzez wybranie pierwszego elementu w wizualnym drzewie zakresu.
Aby wykluczyć kontrolkę z kolejności tabulacji, ustaw właściwość IsTabStop na false.
Zastąpij domyślną kolejność tabulacji, ustawiając właściwość TabIndex .
Uwaga / Notatka
Funkcja TabIndex działa tak samo jak w przypadku elementu UIElement.TabFocusNavigation i Control.TabNavigation.
W tym miejscu pokazano, jak na nawigację fokusu może mieć wpływ właściwość TabIndex na określone elementy.
Nawigacja w zakładce "Lokalny" z zachowaniem właściwości TabIndex
W poprzednim przykładzie istnieją dwa zakresy:
- B1, obszar kierunkowy (B2 - B6) i B7
- obszar kierunkowy (B2 - B6)
Gdy B3 (w obszarze kierunkowym) uzyskuje fokus, zmienia się zakres i nawigacja na kartach przenosi się do obszaru kierunkowego, gdzie zidentyfikowano najlepszego kandydata dla kolejnego skupienia się. W tym przypadku B2, a następnie B4, B5 i B6. Zakres następnie zmienia się ponownie, a fokus zostanie przeniesiony do B1.
Oto kod dla tego przykładu.
<Grid
Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"
TabFocusNavigation="Cycle">
<Grid.RowDefinitions>
<RowDefinition Height="40"/>
<RowDefinition Height="300"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<TextBlock Name="KeyPressed"
Grid.Row="0"
FontWeight="ExtraBold"
HorizontalTextAlignment="Center"
TextWrapping="Wrap"
Padding="10" />
<StackPanel Name="ContainerPrimary"
KeyDown="Container_KeyDown"
Orientation="Horizontal"
HorizontalAlignment="Center"
BorderBrush="Green"
BorderThickness="2"
Grid.Row="1"
Padding="10"
MaxWidth="200">
<Button Name="B1"
Content="B1"
TabIndex="1"
ToolTipService.ToolTip="TabIndex = 1"
GettingFocus="Btn_GettingFocus"
Margin="5"/>
<StackPanel Name="ContainerSecondary"
KeyDown="Container_KeyDown"
TabFocusNavigation ="Local"
Orientation="Vertical"
VerticalAlignment="Center"
BorderBrush="Red"
BorderThickness="2"
Padding="5" Margin="5">
<Button Name="B2"
Content="B2"
GettingFocus="Btn_GettingFocus"
Margin="5"/>
<Button Name="B3"
Content="B3"
TabIndex="3"
ToolTipService.ToolTip="TabIndex = 3"
GettingFocus="Btn_GettingFocus"
Margin="5"/>
<Button Name="B4"
Content="B4"
GettingFocus="Btn_GettingFocus"
Margin="5"/>
<Button Name="B5"
Content="B5"
GettingFocus="Btn_GettingFocus"
Margin="5"/>
<Button Name="B6"
Content="B6"
GettingFocus="Btn_GettingFocus"
Margin="5"/>
</StackPanel>
<Button Name="B7"
Content="B7"
TabIndex="2"
ToolTipService.ToolTip="TabIndex = 2"
GettingFocus="Btn_GettingFocus"
Margin="5"/>
</StackPanel>
</Grid>
Nawigacja kierunkowa 2D dla klawiatury, gamepad i zdalnego sterowania
Typy danych wejściowych innych niż wskaźniki, takie jak klawiatura, gamepad, zdalne sterowanie i narzędzia ułatwień dostępu, takie jak Narrator systemu Windows, mają wspólny, podstawowy mechanizm nawigowania i interakcji z interfejsem użytkownika aplikacji systemu Windows.
W tej sekcji opisano, jak określić preferowaną strategię nawigacji i dostosować nawigację fokusu w aplikacji za pomocą zestawu właściwości strategii nawigacji, które obsługują wszystkie typy danych wejściowych bez wskaźnika fokusu.
Aby uzyskać więcej ogólnych informacji na temat tworzenia aplikacji i środowisk dla konsoli Xbox/TV, zobacz Interakcje z klawiaturą, Projektowanie dla konsoli Xbox i telewizora oraz interakcje z konsolą Gamepad i zdalnego sterowania.
Strategie nawigacji
Strategie nawigacji mają zastosowanie do klawiatury, gamepadu, zdalnego sterowania i różnych narzędzi ułatwień dostępu.
Poniższe właściwości strategii nawigacji pozwalają wpływać na to, która kontrolka odbiera fokus na podstawie strzałki, przycisku klawiatury kierunkowej (D-pad) lub podobnego naciśnięcia.
- XYFocusUpNavigationStrategy
- XYFocusDownNavigationStrategy
- XYFocusLeftNavigationStrategy
- XYFocusRightNavigationStrategy
Te właściwości mają możliwe wartości Auto (domyślne), NavigationDirectionDistance, Projection lub RectilinearDistance .
Jeśli ustawiono wartość Auto, zachowanie elementu jest oparte na elementach podrzędnych elementu. Jeśli wszystkie elementy są ustawione na Wartość Automatyczna, zostanie użyta projekcja .
Uwaga / Notatka
Inne czynniki, takie jak wcześniej skoncentrowany element lub bliskość osi kierunku nawigacji, mogą mieć wpływ na wynik.
Projection
Strategia Projekcji przenosi fokus na pierwszy napotkany element, gdy krawędź aktualnie skoncentrowanego elementu jest rzutowana w kierunku nawigacji.
W tym przykładzie każdy kierunek nawigacji fokusu jest ustawiony na projekcję. Zwróć uwagę, jak fokus przenosi się z B1 do B4, pomijając B3. Wynika to z faktu, że B3 nie znajduje się w strefie projekcji. Zwróć również uwagę, że kandydat do ustawienia ostrości nie jest identyfikowany podczas przechodzenia w lewo od B1. Wynika to z faktu, że pozycja B2 względem B1 eliminuje B3 jako kandydata. Jeśli B3 znajdował się w tym samym wierszu co B2, byłby to realny kandydat do nawigacji po lewej stronie. B2 jest realnym kandydatem ze względu na niezakłóconą bliskość do osi kierunku nawigacji.
Strategia nawigacji projekcyjnej
OdległośćKierunkuNawigacji
Strategia NavigationDirectionDistance przenosi fokus do elementu znajdującego się najbliżej osi kierunku nawigacji.
Krawędź prostokąta ograniczającego odpowiadająca kierunkowi nawigacji jest rozszerzona i rzutowana w celu zidentyfikowania kandydatów na obiekty docelowe. Pierwszy napotkany element jest identyfikowany jako element docelowy. W przypadku wielu kandydatów najbliższy element jest identyfikowany jako element docelowy. Jeśli nadal istnieje wiele kandydatów, element najbardziej górny/lewy jest identyfikowany jako kandydat.
NavigationDirectionDistance navigation strategy (Strategia nawigacji navigationDirectionDistance)
RetilinearDistance
Strategia RectilinearDistance przenosi fokus na najbliższy element bazującą na odległości czworokątnej 2D (geometria Taxicab).
Suma odległości podstawowej i odległości pomocniczej dla każdego potencjalnego kandydata jest używana do identyfikowania najlepszego kandydata. W przypadku remisu pierwszy element po lewej stronie jest wybierany, jeśli żądany kierunek jest w górę lub w dół, a pierwszy element na górze jest wybierany, jeśli żądany kierunek jest w lewo lub w prawo.
Strategia nawigacji retilinearDistance
Na tym obrazie pokazano, jak, gdy fokus jest na B1 i żądanym kierunkiem jest dół, B3 jest kandydatem fokusu RectilinearDistance. Jest to oparte na następujących obliczeniach dla tego przykładu:
- Odległość (B1, B3, Down) wynosi 10 + 0 = 10
- Odległość (B1, B2, W dół) wynosi 0 + 40 = 30
- Odległość (B1, D, W dół) wynosi 30 + 0 = 30
Powiązane artykuły
Windows developer