Deși elementul personalizat poate fi construit în orice proiect WPF, de obicei, aceste elemente sunt plasate într-un ansamblu dedicat - biblioteca de clasă (DLL). Acest lucru vă permite să partajați lucrul cu o mulțime de aplicații WPF.
Pentru a se asigura că toate trimiterile necesare la asamblarea și importul tuturor spațiul de nume necesare pentru a crea aplicații în Visual Studio pentru a fi selectat personalizat de Control Library (WPF) (Personalizat Controls Library (WPF)) ca tip de proiect. În interiorul bibliotecii de clasă, puteți crea orice număr de controale.
Pe măsură ce dezvoltarea unor biblioteci de clasă, de multe ori în valoare de a pune în sine ca o bibliotecă de clasă, iar aplicația pe care-l folosește, la una și aceeași soluție pentru Visual Studio. Acest lucru îl face ușor de a modifica și depana ambele părți împreună.
Primul pas în crearea unui control personalizat - este alegerea clasei de bază corectă pentru moștenire. Aici sunt unele clase utilizate în mod obișnuit pentru a crea comenzi personalizate, iar cifra indică poziția lor în ierarhia elementelor:
Acest lucru - cel mai scăzut nivel, care au, de obicei, să se ocupe de a crea un element personalizat. De obicei, o astfel de abordare este ales numai atunci când aveți nevoie pentru a trage conținutul „de la zero“ prin suprascrierea OnRender () și de a folosi System.Windows.Media.DrawingContext. Acest lucru este similar cu o abordare în cazul în care interfața cu utilizatorul este conceput pe baza vizuală. Clasa FrameworkElement oferă doar cele mai de bază set de proprietăți și evenimente pentru elemente care nu sunt destinate pentru interacțiunea cu utilizatorul
Această clasă este adesea punctul de plecare în construcția de control „de la zero“. Aceasta - Clasa de bază pentru toate comenzile grafice de interacțiune cu utilizatorul. Clasa de comandă adaugă proprietăți pentru a seta prim-plan și fundal, precum fontul și alinierea conținutului. În plus, această clasă se pune într-o secvență de by-pass-cheie
Aceasta - clasa de baza pentru controale care pot fi afișate ca o singură unitate cu conținut arbitrar. Conținutul poate fi obiect utilizator membru utilizat în combinație cu un șablon. (Proprietate Conținut Conținutul este setat și un model opțional poate fi reprezentat în proprietatea ContentTemplate.) Multe dintre comenzile sunt ambalate, tip de conținut limitat specific (cum ar fi o linie de text într-un câmp de text). Deoarece aceste controale nu sunt acceptate de toate elementele, acestea nu ar trebui să fie definit ca un conținut de control
Acest control asupra conținutului, care poate fi configurat cu un timp de proiectare suprafață. Cu toate că un astfel de control al utilizatorului nu este atât de diferit de controlul normal cu conținutul, acesta este utilizat în general atunci când doriți să rapid re-aplică un flux constant al interfeței cu utilizatorul în mai mult de o fereastră (în loc de a crea un adevărat unic de control, care pot fi transferate de la o aplicație la mai mult)
ItemsControl și Selector
ItemsControl - Clasa de bază pentru controale care servesc drept ambalaje pentru elemente de listă, dar nu acceptă gama de poziții, în timp ce Selectorul - clasa de baza mai specializate pentru elemente de opțiune care susțin. Aceste clase nu sunt adesea folosite pentru a crea comenzi personalizate, ca modele de date de fonduri ListBox, ListView și TREEVIEW oferă suficientă flexibilitate
Clasa de bază pentru controale care au aranjamentul logic. Elementul cu aranjamentul poate cuprinde o multitudine de elemente copil și să le plaseze în conformitate cu semantica aspect determinate. Panourile atașate includ adesea proprietăți care pot fi setate în elementele de copil pentru a configura locația lor
Aceasta este clasa de bază pentru componentele care servesc drept ambalaje pentru alte elemente și asigură un efect grafic sau un agent specific. Două exemple sunt izbitoare frontieră, care trage o linie în jurul elementului și Viewbox, scalarea conținutul lor dinamic utilizând transformări. Printre alte decoratiuni - clase Chrome care servesc pentru a furniza cadrul familiar și de fond de control utilizate frecvent, cum ar fi butoanele
element specific de clasă

Deși a permis să construiască un element special, care nu este un control, cele mai multe articole personalizate create în WPF, va controlează cu precizie. Acest lucru înseamnă că acestea vor fi în măsură să ia focalizarea, precum și interacționează cu tastatura de utilizator și acțiunile mouse-ului. Din acest motiv, elementele personalizate pe termen și comenzi personalizate în dezvoltarea WPF-aplicații sunt adesea folosite alternativ.