2011-06-18 12 views
9

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

+2

użyj zdarzenia aktywowanego okna –

+0

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 :) –

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()