Mam okno WPF, które tworzę tylko raz, a następnie kilka razy Show() i Hide(). Teraz szukam sposobu, aby ustawić fokus na elemencie na każdym Show(). Gdzie i jak mogę to zrobić?Zestaw okien WPF Focus
9
A
Odpowiedz
5
W WPF istnieją dwie główne koncepcje, które odnoszą się skupić: skupić się klawiatura i logiczne ostrości. Ostrość klawiatury odnosi się do elementu odbierającego dane z klawiatury, a fokus logiczny odnosi się do elementu w zasięgu ogniskowania, na którym ustawiono ostrość. Pojęcia te zostały szczegółowo omówione w przeglądzie this.
Prawdopodobnie możesz napisać własną metodę ShowHide, włączając w to funkcje Window.Show/Hide i element.Focus, aby obsłużyć obie te same metody.
18
Wystarczy wywołać Element.Focus() na elemencie, który chcesz ustawić na ostrości.
Jeśli masz na myśli przynieść ostrość do okna spróbować nazywając window.Activate()
użyj zdarzenia aktywowanego okna –
tylko po to, żeby być wybrednym: nie jest to wytyczna interfejsu użytkownika, ale z doświadczenia użytkowników, którzy nie lubią bawić się w to, co ustawili. To znaczy. jeśli ustawiam fokus na pole tekstowe, a następnie alt-tab, aby skopiować pewną wartość, jeśli ukryjesz i wyświetlisz formularz, oczekuję, że pozostanę w tym polu tekstowym. Ale oczywiście twoje pytanie może być inspirowane wymaganiami użytkownika. w takim razie po prostu zapomnij o wszystkim :) –