Informații generale despre focalizarea

aplicație WPF are două concepte de bază de focalizare: focus tastatură și focalizare logică. focus intrare se referă la un element care primește o intrare de la tastatură, iar focalizarea logic se referă la elementul într-o regiune care se concentrează. Aceste concepte sunt discutate în detaliu în această secțiune. Ideea generală a diferenței dintre aceste concepte este importantă pentru crearea de aplicații complexe, care au mai multe domenii, puteți primi focalizarea.

Principalele clase care sunt implicate în centrul de management este clasa de tastatură. clasa FocusManager și clase de elemente de bază, cum ar fi UIElement și ContentElement. Pentru mai multe informații despre elementele de bază conținute în înțelegerea elementele de bază.

Clasa de tastatură se referă în principal la focalizarea de intrare, și clasa FocusManager - la un accent logic, dar aceasta nu este o diferență absolută. Elementul care are accentul de intrare, va avea, de asemenea, un accent logic, ci un element care are un accent logic nu are în mod necesar focalizarea de intrare. Acest lucru este evident atunci când se utilizează clasa de tastatură pentru a specifica elementul care are focalizarea intrare, deoarece stabilește, de asemenea, accentul logic pe acest element.

accentul se referă la elementul care primește de intrare tastatura curentă. Toate desktop, la un moment dat poate fi doar un singur membru având focalizarea de intrare. Elementul de aplicare WPF având accentul de intrare, va avea o valoare de proprietate IsKeyboardFocused adevărat. Static clasa tastatură Proprietatea FocusedElement devine un element care are un accent de intrare curent.

Pentru element de intrare a primit focalizarea, proprietatea focalizabil și elementele de bază IsVisible trebuie să fie setat la true. Unele clase, cum ar fi panoul clasei de baza. au o valoare prestabilită pentru proprietatea focalizabil fals; astfel încât trebuie să setați proprietatea focalizabil la true. elementul poate primi focalizarea.

focus intrare pot fi obținute prin interacțiunea utilizatorului cu SP, de exemplu - la o tranziție element sau făcând clic anumite elemente. focalizarea tastaturii pot fi obținute în mod programatic utilizând metoda de focalizare pentru clasa tastatura. Metoda Focus încearcă să dea focus intrare la elementul specificat. Elementul de retur este un element având accentul de intrare, care poate fi diferită de elementul solicitat în cazul în care blocurile de focalizare obiect vechi sau noi, cererea.

Următorul exemplu utilizează metoda Focus. pentru a seta focalizarea de intrare la obiect Button.

Proprietățile IsKeyboardFocused pentru clasele de bază primește o valoare care indică dacă elementul de focalizare. IsKeyboardFocusWithin proprietăți pentru clasele de bază primește o valoare care indică dacă elementul are, sau unul dintre elementul său copil vizibil, accentul de intrare.

focalizare logică se referă la proprietatea FocusManager. FocusedElement în regiunea focală. Zona de focalizare este elementul care stochează proprietăți calea FocusedElement în acea zonă. Când focalizarea de intrare lasă un domeniu de aplicare focalizare, elementul concentrat pierde focalizarea de intrare, dar își păstrează focalizarea logică. Atunci când se întoarce focalizarea de intrare în zona de focalizare, elementul concentrat primește din nou focalizarea. Acest lucru permite focalizarea de intrare să se deplaseze între mai multe zone de focalizare, dar asigură că elementul concentrat în centrul atenției devine din nou focalizarea atunci când focalizarea revine în zona de focalizare.

Cererea poate fi de mai multe elemente cu focalizare logică, dar într-o anumită zonă de focalizare, un singur membru poate avea un accent logic.

Element cu accentul de intrare este un punct focal logic pentru regiunea focal căruia îi aparține.

Elementul poate fi inclus în zona de focalizare în limba XAML prin stabilirea proprietății atașat IsFocusScope obiecta valoare FocusManager adevărat. Elementul de cod poate fi inclus în zona de focalizare prin apelarea metodei SetIsFocusScope.

Exemplul următor creează StackPanel obiect în regiunea focal prin setarea IsFocusScope valoare asociată.