рд╕рд╛рдордЧреНрд░реА рдХреА рддрд╛рд▓рд┐рдХрд╛
- рдкрд░рд┐рдЪрдп
- рдкреНрд░рд╛рд░рдореНрднрд┐рдХ рдкреНрд░рд┐рдЬреНрдо рдЕрдиреБрдкреНрд░рдпреЛрдЧ
- рдШрдЯрдХреЛрдВ рдХреЗ рдмреАрдЪ рдирд┐рд░реНрднрд░рддрд╛ рдХрд╛ рдкреНрд░рдмрдВрдзрди
- рдореЙрдбреНрдпреВрд▓рд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╡рд┐рдХрд╛рд╕
- рдПрдорд╡реАрд╡реАрдПрдо рдкреИрдЯрд░реНрди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛
- рдЙрдиреНрдирдд MVVM рдкрд░рд┐рджреГрд╢реНрдп
- рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдирд┐рд░реНрдорд╛рдг
- рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рджрд┐рд╢рд╛рдирд┐рд░реНрджреЗрд╢
- рдиреЗрд╡рд┐рдЧреЗрд╢рди
- рджреГрд╢реНрдп-рдЖрдзрд╛рд░рд┐рдд рдиреЗрд╡рд┐рдЧреЗрд╢рди
- рд╢рд┐рдерд┐рд▓ рдпреБрдЧреНрдорд┐рдд рдШрдЯрдХреЛрдВ рдХреЗ рдмреАрдЪ рдкрд╛рд░рд╕реНрдкрд░рд┐рдХ рдХреНрд░рд┐рдпрд╛
Model-View-ViewModel (MVVM,
View-View-View ) рдореЙрдбрд▓ рдЖрдкрдХреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╕реЗ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рддрд░реНрдХ рдФрд░ рдкреНрд░рд╕реНрддреБрддрд┐ рддрд░реНрдХ рдХреЛ рдЕрд▓рдЧ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИред рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓реЙрдЬрд┐рдХ рдФрд░ UI рдХреЗ рдмреАрдЪ рдЬрд┐рдореНрдореЗрджрд╛рд░реА рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдЖрдкрдХреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдкрд░реАрдХреНрд╖рдг, рд░рдЦрд░рдЦрд╛рд╡ рдФрд░ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП рдЖрд╕рд╛рди рдмрдирд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рдХреЛрдб рдХреЗ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХреА рдХреНрд╖рдорддрд╛рдУрдВ рдореЗрдВ рднреА рдХрд╛рдлреА рд╕реБрдзрд╛рд░ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдФрд░ рдбрд┐рдЬрд╛рдЗрдирд░реЛрдВ рдХреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рднрд╛рдЧреЛрдВ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдкрд░ рдЕрдзрд┐рдХ рдЖрд╕рд╛рдиреА рд╕реЗ рд╕рд╣рдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рдПрдорд╡реАрд╡реАрдПрдо рдкреИрдЯрд░реНрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдпреВрдЬрд░ рдЗрдВрдЯрд░рдлреЗрд╕, рдкреНрд░реЗрдЬреЗрдВрдЯреЗрд╢рди рд▓реЙрдЬрд┐рдХ рдФрд░ рдмрд┐рдЬрдиреЗрд╕ рд▓реЙрдЬрд┐рдХ рдХреЛ рддреАрди рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╡рд░реНрдЧреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрд╣ рдПрдХ рджреГрд╢реНрдп рд╣реИ рдЬреЛ UI рдФрд░ рдЙрд╕рдХреЗ рддрд░реНрдХ рдХреЛ рдЬреЛрдбрд╝рддрд╛ рд╣реИ, рдПрдХ рджреГрд╢реНрдп рдореЙрдбрд▓ рдЬреЛ рдкреНрд░рд╕реНрддреБрддрд┐ рддрд░реНрдХ рдФрд░ рдЙрд╕рдХреЗ рд░рд╛рдЬреНрдп рдХреЛ рдШреЗрд░рддрд╛ рд╣реИ, рдФрд░ рдПрдХ рдореЙрдбрд▓ рдЬреЛ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреЗ рд╡реНрдпрд╛рдкрд╛рд░ рддрд░реНрдХ рдФрд░ рдбреЗрдЯрд╛ рдХреЛ рдШреЗрд░рддрд╛ рд╣реИред
рдкреНрд░рд┐рдЬреНрдо рдореЗрдВ рдЙрджрд╛рд╣рд░рдг рдФрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдЙрджрд╛рд╣рд░рдг рд╢рд╛рдорд┐рд▓ рд╣реИрдВ рдЬреЛ рджрд┐рдЦрд╛рддреЗ рд╣реИрдВ рдХрд┐ рдПрдорд╡реАрд╡реАрдПрдо рдкреИрдЯрд░реНрди рдХреЛ рд╕рд┐рд▓реНрд╡рд░рд▓рд╛рдЗрдЯ рдпрд╛ рдбрдмреНрд▓реНрдпреВрдкреАрдПрдл рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдПред рдкреНрд░рд┐рдЬреНрдо рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдРрд╕реА рд╕реБрд╡рд┐рдзрд╛рдПрдБ рднреА рдкреНрд░рджрд╛рди рдХрд░рддреА рд╣реИ рдЬреЛ рдЗрд╕ рдкреИрдЯрд░реНрди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░ рд╕рдХрддреА рд╣реИрдВред рдпреЗ рд╕реБрд╡рд┐рдзрд╛рдПрдБ MVVM рдкреИрдЯрд░реНрди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЖрдо рддрд░реАрдХреЗ рд╣реИрдВ рдФрд░ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдмреНрд▓реЗрдВрдб рдФрд░ рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЗ рд╕рд╛рде рдкрд░реАрдХреНрд╖рдг рдФрд░ рдЕрдиреБрдХреВрд▓рддрд╛ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХреА рдЧрдИ рд╣реИрдВред
рдпрд╣ рдЕрдзреНрдпрд╛рдп MVVM рдкреИрдЯрд░реНрди рдХрд╛ рдЕрд╡рд▓реЛрдХрди рджреЗрддрд╛ рд╣реИ рдФрд░ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдПред рдЕрдзреНрдпрд╛рдп 6 рдореЗрдВ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдкреНрд░рд┐рдЬреНрдо рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдПрдорд╡реАрд╡реАрдПрдо рд▓рд┐рдкрд┐рдпреЛрдВ рдХреЛ рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдПред
рдЬрд┐рдореНрдореЗрджрд╛рд░рд┐рдпреЛрдВ рдФрд░ рд╡рд░реНрдЧ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ
рдПрдорд╡реАрд╡реАрдПрдо рдкреИрдЯрд░реНрди
рдкреНрд░реЗрдЬреЗрдВрдЯреЗрд╢рди рдореЙрдбрд▓ рдкреИрдЯрд░реНрди рдХреА рдПрдХ рдХрд░реАрдмреА рднрд┐рдиреНрдирддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдХреБрдЫ рдмреБрдирд┐рдпрд╛рджреА WPF рдФрд░ рд╕рд┐рд▓реНрд╡рд░рд▓рд╛рдЗрдЯ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдмреЗрд╣рддрд░ рд╕рдВрд░реЗрдЦрдг рдХреЗ рд▓рд┐рдП рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬреИрд╕реЗ рдбреЗрдЯрд╛ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ, рдбреЗрдЯрд╛ рдкреИрдЯрд░реНрди, рдХрдорд╛рдВрдб рдФрд░ рд╡реНрдпрд╡рд╣рд╛рд░ред
MVVM рдкреИрдЯрд░реНрди рдореЗрдВ, рдПрдХ рджреГрд╢реНрдп UI рдФрд░ рдХрд┐рд╕реА рднреА UI рддрд░реНрдХ рдХреЛ рдПрдирдХреИрдкреНрд╕реБрд▓реЗрдЯ рдХрд░рддрд╛ рд╣реИ, рдПрдХ рджреГрд╢реНрдп рдореЙрдбрд▓ рдкреНрд░рд╕реНрддреБрддрд┐ рддрд░реНрдХ рдФрд░ рдЙрд╕рдХреЗ рд░рд╛рдЬреНрдп рдХреЛ рдЗрдирдХреИрдкреНрд╕реБрд▓реЗрдЯ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдореЙрдбрд▓ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рддрд░реНрдХ рдФрд░ рдбреЗрдЯрд╛ рдХреЛ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХрд░рддрд╛ рд╣реИред рдбреЗрдЯрд╛, рдЖрджреЗрд╢реЛрдВ рдФрд░ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдШрдЯрдирд╛рдУрдВ рдХреЛ рдмрд╛рдЗрдВрдб рдХрд░рдХреЗ рдПрдХ рджреГрд╢реНрдп рдореЙрдбрд▓ рдХреЗ рд╕рд╛рде рдПрдХ рджреГрд╢реНрдп рдХрд╛ рдЖрджрд╛рди-рдкреНрд░рджрд╛рди рд╣реЛрддрд╛ рд╣реИред рдкреНрд░рд╕реНрддреБрддрд┐ рдореЙрдбрд▓ рдореЙрдбрд▓ рд╕реЗ рдбреЗрдЯрд╛ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рддрд╛ рд╣реИ, рдпрд╛ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреА рд╕реВрдЪрдирд╛рдУрдВ рдХреА рд╕рджрд╕реНрдпрддрд╛ рд▓реЗрддрд╛ рд╣реИ, рдФрд░ рдЕрдкрдбреЗрдЯ рдХреЛ рдореЙрдбрд▓ рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╕рдордиреНрд╡рдпрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рддреЛ рдбреЗрдЯрд╛ рдХреЛ рджреГрд╢реНрдп рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкреБрд╖реНрдЯрд┐ рдФрд░ рдПрдХрддреНрд░ рдХрд░рддрд╛ рд╣реИред
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рджреГрд╖реНрдЯрд╛рдВрдд рдПрдорд╡реАрд╡реАрдПрдо рдкреИрдЯрд░реНрди рдХреЗ рддреАрди рднрд╛рдЧреЛрдВ рдФрд░ рдЙрдирдХреА рдмрд╛рддрдЪреАрдд рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИред

рд╡рд┐рднрд╛рдЬрд┐рдд рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЗ рд╕рднреА рдкреИрдЯрд░реНрди рдХреЗ рд╕рд╛рде, MVVM рдкреИрдЯрд░реНрди рдХреЛ рдкреНрд░рднрд╛рд╡реА рдврдВрдЧ рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреБрдВрдЬреА рдпрд╣ рд╣реИ рдХрд┐ рдЕрдкрдиреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛрдб рдХреЛ рд╕рд╣реА рд╡рд░реНрдЧреЛрдВ рдореЗрдВ рдХреИрд╕реЗ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдП, рдФрд░ рдЗрди рд╡рд░реНрдЧреЛрдВ рдХреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдореЗрдВ рдмрд╛рддрдЪреАрдд рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЛрдВ рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдПред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЕрдиреБрднрд╛рдЧ MVVM рдкреИрдЯрд░реНрди рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рд╡рд░реНрдЧ рдХреА рдЬрд┐рдореНрдореЗрджрд╛рд░рд┐рдпреЛрдВ рдФрд░ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реИрдВред
рдХрдХреНрд╖рд╛ рджреЗрдЦреЗрдВ
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реНрдХреНрд░реАрди рдкрд░ рдХреНрдпрд╛ рджреЗрдЦрддрд╛ рд╣реИ, рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджреГрд╢реНрдп рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИред рдЖрджрд░реНрд╢ рд░реВрдк рд╕реЗ, рдХреЛрдб-рдкреАрдЫреЗ рдХреЗ рджреГрд╢реНрдп рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рд╣реЛрддрд╛ рд╣реИ, рдЬреЛ рдХрд┐
InitializeComponent
рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИред рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдХреЛрдб-рдкреАрдЫреЗ рдореЗрдВ рдпреВрдЖрдИ рд▓реЙрдЬрд┐рдХ рдХреЛрдб рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдПрдХреНрд╕рдПрдПрдордПрд▓ рдореЗрдВ рд╡реНрдпрдХреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдард┐рди рдпрд╛ рдЕрдкреНрд░рднрд╛рд╡реА рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ рдЬрдЯрд┐рд▓ рдПрдирд┐рдореЗрд╢рди, рдпрд╛ рдЬрдм рдХреЛрдб рдХреЛ рджреГрд╢реНрдп рддрддреНрд╡реЛрдВ рдХрд╛ рд╕реАрдзреЗ рдирд┐рдпрдВрддреНрд░рдг рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ рдХрд┐ рджреГрд╢реНрдп рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИрдВред рдпрд╣ рддрд░реНрдХ рдХреЛрдб рдбрд╛рд▓рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рд╣реИ рдЬреЛ рдПрдХ рджреГрд╢реНрдп рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЖрдорддреМрд░ рдкрд░, рдпреВрдЖрдИ рдСрдЯреЛрдореЗрд╢рди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреЛрдб-рдмреИрдХ рд╡реНрдпреВ рдореЗрдВ рдХреЛрдб рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рд╕рд┐рд▓реНрд╡рд░рд▓рд╛рдЗрдЯ рдФрд░ рдбрдмреНрд▓реНрдпреВрдкреАрдПрдл рдореЗрдВ, рдПрдХ рджреГрд╢реНрдп рдореЗрдВ рдбреЗрдЯрд╛ рдмрд╛рдзреНрдпрдХрд╛рд░реА рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдЗрд╕рдХреЗ рдбреЗрдЯрд╛ рд╕рдВрджрд░реНрдн рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред MVVM рдореЗрдВ, рдкреНрд░рд╕реНрддреБрддрд┐ рдореЙрдбрд▓ рдХреЛ рдкреНрд░рд╕реНрддреБрддрд┐ рдбреЗрдЯрд╛ рдХреЗ рд╕рдВрджрд░реНрдн рдХреЗ рд░реВрдк рдореЗрдВ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рджреГрд╢реНрдп рдореЙрдбрд▓ рдЙрди рдЧреБрдгреЛрдВ рдФрд░ рдЖрджреЗрд╢реЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рдирдХреЗ рд▓рд┐рдП рджреГрд╢реНрдп рдмрд╛рдзреНрдп рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдкрд░рд┐рд╡рд░реНрддрди рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдШрдЯрдирд╛рдУрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд┐рд╕реА рднреА рд░рд╛рдЬреНрдп рдХреЗ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рджреГрд╢реНрдп рдХреЛ рд╕реВрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИред рдЖрдорддреМрд░ рдкрд░ рдПрдХ рджреГрд╢реНрдп рдФрд░ рдЙрд╕рдХреЗ рдкреНрд░рд╕реНрддреБрддрд┐ рдореЙрдбрд▓ рдХреЗ рдмреАрдЪ рд╕реАрдзрд╛ рд╕рдВрдмрдВрдз рд╣реЛрддрд╛ рд╣реИред
рдЖрдорддреМрд░ рдкрд░, рджреГрд╢реНрдп
Control
рдпрд╛
UserControl
рд╡рд░реНрдЧреЛрдВ рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓реЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдкреНрд░рд╕реНрддреБрддрд┐ рдХреЛ рдПрдХ рдбреЗрдЯрд╛ рдЯреЗрдореНрдкрд▓реЗрдЯ рджреНрд╡рд╛рд░рд╛ рджрд░реНрд╢рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдпреВрдЖрдИ рддрддреНрд╡реЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдиреЗрддреНрд░рд╣реАрди рд░реВрдк рд╕реЗ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдбреЗрдЯрд╛ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдбреЗрд╡рд▓рдкрд░ рдЖрд╕рд╛рдиреА рд╕реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдкреНрд░рд╕реНрддреБрддрд┐ рдореЙрдбрд▓ рдХреА рдХрд▓реНрдкрдирд╛ рдХреИрд╕реЗ рдХреА рдЬрд╛рдПрдЧреА, рдпрд╛ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдСрдмреНрдЬреЗрдХреНрдЯ рдпрд╛ рдЙрд╕рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рд╕реАрдзреЗ рдмрджрд▓реЗ рдмрд┐рдирд╛ рдЕрдкрдиреЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рджреГрд╢реНрдп рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХреЛ рдмрджрд▓ рд╕рдХрддрд╛ рд╣реИред
рдбреЗрдЯрд╛ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдХреЛ рдЙрди рд╡рд┐рдЪрд╛рд░реЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬрд┐рдирдореЗрдВ рдХреЛрдб-рдкреАрдЫреЗ рдХреА рдХрдореА рд╣реИред рдЙрдиреНрд╣реЗрдВ рдХреБрдЫ рдкреНрд░рдХрд╛рд░ рдХреЗ рдкреНрд░рд╕реНрддреБрддрд┐ рдореЙрдбрд▓ рд╕реЗ рдмрд╛рдВрдзрдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдЬрдм рдЙрдиреНрд╣реЗрдВ UI рдкрд░ рдореИрдк рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рд░рди рдЯрд╛рдЗрдо рдХреЗ рджреМрд░рд╛рди, рдЯреЗрдореНрдкрд▓реЗрдЯ рджреНрд╡рд╛рд░рд╛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рджреГрд╢реНрдп, рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рд╕рдВрдмрдВрдзрд┐рдд рджреГрд╢реНрдп рдореЙрдбрд▓ рдХреЛ рдЗрд╕рдХреЗ рдбреЗрдЯрд╛ рд╕рдВрджрд░реНрдн рджреНрд╡рд╛рд░рд╛ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
WPF рдореЗрдВ, рдЖрдк рдПрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди-рд╕реНрддрд░реАрдп рджреГрд╢реНрдп рдореЙрдбрд▓ рдХреЗ рд╕рд╛рде рдПрдХ рдбреЗрдЯрд╛ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЛ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред рддрдм WPF рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЗрд╕ рдбреЗрдЯрд╛ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдкреНрд░рдХрд╛рд░ рдХреЗ рдкреНрд░рд╕реНрддреБрддрд┐ рдореЙрдбрд▓ рдХреЗ рдХрд┐рд╕реА рднреА рдСрдмреНрдЬреЗрдХреНрдЯ рдкрд░ рд▓рд╛рдЧреВ рдХрд░реЗрдЧрд╛ рдЬрдм рднреА рд╡реЗ UI рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрдВрдЧреЗред рдЗрд╕реЗ рдирд┐рд╣рд┐рдд рдбреЗрдЯрд╛ рдкреИрдЯрд░реНрди рдХреЗ рд░реВрдк рдореЗрдВ рдЬрд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕рд┐рд▓реНрд╡рд░рд▓рд╛рдЗрдЯ рдореЗрдВ, рдЖрдкрдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЙрд╕ рдирд┐рдпрдВрддреНрд░рдг рдореЙрдбрд▓ рдХреЗ рд▓рд┐рдП рдПрдХ рдбреЗрдЯрд╛ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрд┐рд╕реЗ рдирд┐рдпрдВрддреНрд░рдг рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдПрдХ рдбреЗрдЯрд╛ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдХреЛ рдЙрд╕ рдирд┐рдпрдВрддреНрд░рдг рдореЗрдВ рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдпрд╛ рдореВрд▓ рджреГрд╢реНрдп рдХреЗ рдмрд╛рд╣рд░ рд╕рдВрд╕рд╛рдзрди рд╢рдмреНрджрдХреЛрд╢ рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдкреНрд░рд╕реНрддреБрддрд┐ рд╕рдВрд╕рд╛рдзрди рд╢рдмреНрджрдХреЛрд╢ рдХреЗ рд╕рд╛рде рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рдПрдХ рд╡рд┐рдЪрд╛рд░ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдореБрдЦреНрдп рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рд╣реИрдВ:
- рдПрдХ рджреГрд╢реНрдп рдПрдХ рджреГрд╢реНрдп рддрддреНрд╡ рд╣реИ, рдЬреИрд╕реЗ рдЦрд┐рдбрд╝рдХреА, рдкреГрд╖реНрда, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд┐рдпрдВрддреНрд░рдг рдпрд╛ рдбреЗрдЯрд╛ рдЯреЗрдореНрдкрд▓реЗрдЯред рдПрдХ рджреГрд╢реНрдп рдирд┐рдпрдВрддреНрд░рдг, рдЙрдирдХреЗ рд▓реЗрдЖрдЙрдЯ рдФрд░ рд╢реИрд▓реА рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИред
- рдПрдХ рджреГрд╢реНрдп рдЕрдкрдиреЗ
DataContext
рд╕рдВрдкрддреНрддрд┐ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рджреГрд╢реНрдп рдореЙрдбрд▓ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИред рджреГрд╢реНрдп рдореЗрдВ рдирд┐рдпрдВрддреНрд░рдг рджреГрд╢реНрдп рдореЙрдбрд▓ рдХреЗ рдЧреБрдгреЛрдВ рдФрд░ рдЖрджреЗрд╢реЛрдВ рд╕реЗ рдмрдВрдзрд╛ рд╣реЛрддрд╛ рд╣реИред - рдПрдХ рджреГрд╢реНрдп рдФрд░ рджреГрд╢реНрдп рдореЙрдбрд▓ рдХреЗ рдмреАрдЪ рдбреЗрдЯрд╛ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рджреГрд╢реНрдп рдпреВрдЖрдИ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдбреЗрдЯрд╛ рдХреЛ рдкреНрд░рд╛рд░реВрдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореВрд▓реНрдп рдХрдиреНрд╡рд░реНрдЯрд░реНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдпрд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдирдкреБрдЯ рдХреЗ рд▓рд┐рдП рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рддреНрдпрд╛рдкрди рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рддреНрдпрд╛рдкрди рдирд┐рдпрдореЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реИред
- рдПрдХ рджреГрд╢реНрдп рдпреВрдЖрдИ рдХреЗ рджреГрд╢реНрдп рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдФрд░ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ рдПрдирд┐рдореЗрд╢рди рдпрд╛ рд╕рдВрдХреНрд░рдордг, рдЬреЛ рджреГрд╢реНрдп рдореЙрдбрд▓ рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдпрд╛ рдпреВрдЖрдИ рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдмрд╛рддрдЪреАрдд рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЯреНрд░рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
- рдХреЛрдб-рдкреАрдЫреЗ рдХреЗ рджреГрд╢реНрдп рдпреВрдЖрдИ рддрд░реНрдХ рдХреЛ рдХреБрдЫ рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдПрдХреНрд╕рдПрдПрдордПрд▓ рдореЗрдВ рд╡реНрдпрдХреНрдд рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ, рдпрд╛ рдЬрд┐рд╕реЗ рджреГрд╢реНрдп рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╡рд┐рд╢рд┐рд╖реНрдЯ рдпреВрдЖрдИ рдирд┐рдпрдВрддреНрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рд╕реАрдзреЗ рд╕рдВрджрд░реНрдн рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред
рдореЙрдбрд▓ рдХреНрд▓рд╛рд╕ рджреЗрдЦреЗрдВ
рдПрдорд╡реАрд╡реАрдПрдо рдкреИрдЯрд░реНрди рдореЗрдВ рдкреНрд░рд╕реНрддреБрддрд┐ рдореЙрдбрд▓ рдкреНрд░рджрд░реНрд╢рди рддрд░реНрдХ рдФрд░ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рдХреЛ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХрд░рддрд╛ рд╣реИред рдкреНрд░рд╕реНрддреБрддрд┐ рдпрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдкреНрд░рдХрд╛рд░ рдпрд╛ рдкреНрд░рд╕реНрддреБрддрд┐ рдХреЗ рдЬреНрдЮрд╛рди рд╕реЗ рдЙрд╕рдХрд╛ рдХреЛрдИ рд╕реАрдзрд╛ рд╕рдВрдмрдВрдз рдирд╣реАрдВ рд╣реИред рджреГрд╢реНрдп рдореЙрдбрд▓ рдЙрди рдЧреБрдгреЛрдВ рдФрд░ рдЖрджреЗрд╢реЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рдирдХреЗ рд▓рд┐рдП рджреГрд╢реНрдп рдбреЗрдЯрд╛ рдХреЛ рдмрд╛рдБрдз рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдШрдЯрдирд╛рдУрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд┐рд╕реА рднреА рд░рд╛рдЬреНрдп рдХреЗ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рджреГрд╢реНрдп рдХреЛ рд╕реВрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИред рджреГрд╢реНрдп рдореЙрдбрд▓ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЧреБрдг рдФрд░ рдЖрджреЗрд╢ UI рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреА рд╣реИ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рдХреИрд╕реЗ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдкреНрд░рд╕реНрддреБрдд рдХреА рдЬрд╛рдПрдЧреАред
рджреГрд╢реНрдп рдореЙрдбрд▓ рдЖрд╡рд╢реНрдпрдХ рдореЙрдбрд▓ рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рд╕рд╛рде рджреГрд╢реНрдп рдХреА рдмрд╛рддрдЪреАрдд рдХреЗ рд╕рдордиреНрд╡рдп рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИред рдЕрдХреНрд╕рд░, рдПрдХ рдкреНрд░рд╕реНрддреБрддрд┐ рдореЙрдбрд▓ рдФрд░ рдореЙрдбрд▓ рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рдмреАрдЪ рдПрдХ-рд╕реЗ-рдХрдИ рд╕рдВрдмрдВрдз рд╣реЛрддреЗ рд╣реИрдВред рдПрдХ рджреГрд╢реНрдп рдореЙрдбрд▓ рд╕реАрдзреЗ рдореЙрдбрд▓ рдХрдХреНрд╖рд╛рдУрдВ рдХреЛ рд╡рд┐рдЪрд╛рд░реЛрдВ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдкрдиреНрди рдХрд░ рд╕рдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ рджреГрд╢реНрдп рдореЗрдВ рдирд┐рдпрдВрддреНрд░рдг рдбреЗрдЯрд╛ рдХреЛ рд╕реАрдзреЗ рдЙрдирдХреЗ рд╕рд╛рде рдмрд╛рдБрдз рд╕рдХреЗред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдореЙрдбрд▓ рд╡рд░реНрдЧреЛрдВ рдХреЛ рдбреЗрдЯрд╛ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдФрд░ рд╕рдВрдмрдВрдзрд┐рдд рдкрд░рд┐рд╡рд░реНрддрди рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдШрдЯрдирд╛рдУрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕ рдкрд░рд┐рджреГрд╢реНрдп рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП, рдЗрд╕ рд╡рд┐рд╖рдп рдореЗрдВ рдмрд╛рдж рдореЗрдВ рдбреЗрдЯрд╛ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдЕрдиреБрднрд╛рдЧ рджреЗрдЦреЗрдВред
рдПрдХ рджреГрд╢реНрдп рдореЙрдбрд▓ рдореЙрдбрд▓ рдбреЗрдЯрд╛ рдХреЛ рдмрджрд▓ рдпрд╛ рд╣реЗрд░рдлреЗрд░ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ рджреГрд╢реНрдп рдЖрд╕рд╛рдиреА рд╕реЗ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХреЗред рдХрд┐рд╕реА рджреГрд╢реНрдп рдореЙрдбрд▓ рдореЗрдВ рджреГрд╢реНрдп рдХреА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЕрддрд┐рд░рд┐рдХреНрдд рдЧреБрдг рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рдпреЗ рдЧреБрдг рдЖрдорддреМрд░ рдкрд░ рдореЙрдбрд▓ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреЗред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рджреГрд╢реНрдп рдореЙрдбрд▓ рдЕрдкрдиреЗ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рджреЛ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЗ рдореВрд▓реНрдп рдХреЛ рдЬреЛрдбрд╝ рд╕рдХрддрд╛ рд╣реИ, рдпрд╛ рдпрд╣ рд╕реАрдорд┐рдд рд╕реНрдЯреНрд░рд┐рдВрдЧ рд▓рдВрдмрд╛рдИ рд╡рд╛рд▓реЗ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╡реЗрд╢ рдХрд░рддреЗ рд╕рдордп рд╢реЗрд╖ рд╡рд░реНрдгреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреА рдЧрдгрдирд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдПрдХ рджреГрд╢реНрдп рдореЙрдбрд▓ рднреА рд╕реНрдерд┐рд░рддрд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рд╕рддреНрдпрд╛рдкрди рддрд░реНрдХ рдХреЛ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рдПрдХ рджреГрд╢реНрдп рдореЙрдбрд▓ рддрд╛рд░реНрдХрд┐рдХ рд░рд╛рдЬреНрдпреЛрдВ рдХреЛ рднреА рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдпреВрдЖрдИ рдореЗрдВ рджреГрд╢реНрдп рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рджреГрд╢реНрдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдПрдХ рджреГрд╢реНрдп рдорд╛рд░реНрдХрдЕрдк рдпрд╛ рд╢реИрд▓реА рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдПрдХ рджреГрд╢реНрдп рдореЙрдбрд▓ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рджреГрд╢реНрдп рдореЙрдбрд▓ рдореЗрдВ рдПрдХ рд╕реНрдерд┐рддрд┐ рд╣реЛ рд╕рдХрддреА рд╣реИ рдЬреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддреА рд╣реИ рдХрд┐ рдбреЗрдЯрд╛ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд░реВрдк рд╕реЗ рдПрдХ рд╡реЗрдм рд╕реЗрд╡рд╛ рдХреЛ рдкреНрд░реЗрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рджреГрд╢реНрдп рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдХреЗ рджреМрд░рд╛рди рджреГрд╢реНрдп рдПрдиреАрдореЗрд╢рди рджрд┐рдЦрд╛ рд╕рдХрддрд╛ рд╣реИред
рдЖрдорддреМрд░ рдкрд░, рдПрдХ рдкреНрд░рд╕реНрддреБрддрд┐ рдореЙрдбрд▓ рдЙрди рдХрдорд╛рдВрдб рдпрд╛ рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬрд┐рдиреНрд╣реЗрдВ рдпреВрдЖрдИ рдореЗрдВ рджрд░реНрд╢рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рдЖрд╣реНрд╡рд╛рди рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЙрджрд╛рд╣рд░рдг рддрдм рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдПрдХ рджреГрд╢реНрдп рдореЙрдбрд▓ рдПрдХ
Submit
рдХрдорд╛рдВрдб рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рд╡реЗрдм рд╕реЗрд╡рд╛ рдпрд╛ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рдбреЗрдЯрд╛ рдкрд╛рд╕ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рджреГрд╢реНрдп рдЗрд╕ рдЖрджреЗрд╢ рдХреЛ рдПрдХ рдмрдЯрди рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрд╕реЗ рдбреЗрдЯрд╛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрд▓рд┐рдХ рдХрд░ рд╕рдХреЗред рдЖрдорддреМрд░ рдкрд░, рдЬрдм рдХреЛрдИ рдХрдорд╛рдВрдб рдЕрдиреБрдкрд▓рдмреНрдз рд╣реЛ рдЬрд╛рддреА рд╣реИ, рддреЛ UI рдореЗрдВ рд╕рдВрдмрдВрдзрд┐рдд рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдЕрдХреНрд╖рдо рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдХрдорд╛рдВрдб рдЖрдкрдХреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдПрдирдХреИрдкреНрд╕реБрд▓реЗрдЯ рдХрд░рдиреЗ рдФрд░ рдЙрдирдХреА рджреГрд╢реНрдп рдкреНрд░рд╕реНрддреБрддрд┐ рд╕реЗ рдЕрд▓рдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВред
рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдкреНрд░рд╕реНрддреБрддрд┐ рдореЙрдбрд▓ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреНрд░рдореБрдЦ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рд╣реИрдВ:
- рдпрд╣ рдПрдХ рд╡рд┐рдЬрд╝реБрдЕрд▓ рдХреНрд▓рд╛рд╕ рдирд╣реАрдВ рд╣реИ рдФрд░ рдХрд┐рд╕реА рднреА WPF рдпрд╛ рд╕рд┐рд▓реНрд╡рд░рд▓рд╛рдЗрдЯ рдмреЗрд╕ рдХреНрд▓рд╛рд╕ рд╕реЗ рдЗрдирд╣реЗрд░рд┐рдЯ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреНрд░рд┐рдпрд╛рдУрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдкреНрд░рд╕реНрддреБрддрд┐ рддрд░реНрдХ рдХреЛ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХрд░рддрд╛ рд╣реИред рдкреНрд░рд╕реНрддреБрддрд┐ рдореЙрдбрд▓ рдХреЛ рдкреНрд░рд╕реНрддреБрддрд┐ рдФрд░ рдореЙрдбрд▓ рдХреЗ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
- рдЖрдорддреМрд░ рдкрд░ рджреГрд╢реНрдп рдХреЛ рд╕реАрдзреЗ рд╕рдВрджрд░реНрднрд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдЙрди рдЧреБрдгреЛрдВ рдФрд░ рдЖрджреЗрд╢реЛрдВ рдХреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬрд┐рдирд╕реЗ рдХреЛрдИ рджреГрд╢реНрдп рдбреЗрдЯрд╛ рдХреЛ рдмрд╛рдБрдз рд╕рдХрддрд╛ рд╣реИред рдпрд╣
INotifyCollectionChanged
рдФрд░ INotifyCollectionChanged
рдХреА рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдШрдЯрдирд╛рдУрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд┐рд╕реА рднреА рд░рд╛рдЬреНрдп рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рджреГрд╢реНрдп рдХреЛ рд╕реВрдЪрд┐рдд рдХрд░рддрд╛ INotifyCollectionChanged
ред - рдореЙрдбрд▓ рдХреЗ рд╕рд╛рде рджреГрд╢реНрдп рдХреА рдмрд╛рддрдЪреАрдд рдХрд╛ рд╕рдордиреНрд╡рдп рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдбреЗрдЯрд╛ рдХреЛ рд░реВрдкрд╛рдВрддрд░рд┐рдд рдпрд╛ рд╣реЗрд░рдлреЗрд░ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ рдЗрд╕реЗ рдЖрд╕рд╛рдиреА рд╕реЗ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХреЗ, рдФрд░ рдпрд╣ рдЕрддрд┐рд░рд┐рдХреНрдд рдЧреБрдгреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдореЙрдбрд▓ рдореЗрдВ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣
IDataErrorInfo
рдпрд╛ INotifyDataErrorInfo
рдорд╛рдзреНрдпрдо рд╕реЗ рдбреЗрдЯрд╛ рд╕рддреНрдпрд╛рдкрди рдХреЛ рднреА рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддрд╛ INotifyDataErrorInfo
ред - рдпрд╣ рддрд╛рд░реНрдХрд┐рдХ рд░рд╛рдЬреНрдпреЛрдВ рдХреА рдкрд╣рдЪрд╛рди рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рджреГрд╢реНрдп рдХрд┐рд╕реА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рджрд┐рдЦрд╛рдИ рджреЗ рд╕рдХрддрд╛ рд╣реИред
рдиреЛрдЯред рдкреНрд░рд╕реНрддреБрддрд┐ рдпрд╛ рдкреНрд░рд╕реНрддреБрддрд┐ рдореЙрдбрд▓?
рдЕрдХреНрд╕рд░, рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдирд╛ рдХрд┐ рдирд┐рд╢реНрдЪрд┐рдд рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╣рд╛рдБ рд▓рд╛рдЧреВ рдХреА рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдП, рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИред рд╕рд╛рдорд╛рдиреНрдп рдирд┐рдпрдо рдХрд╣рддрд╛ рд╣реИ: рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рджреГрд╢реНрдп рдкреНрд░рджрд░реНрд╢рди рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдХреБрдЫ рднреА рдФрд░ рдЬрд┐рд╕реЗ рдмрд╛рдж рдореЗрдВ рдЕрдкрдЧреНрд░реЗрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рднрд▓реЗ рд╣реА рдЖрдк рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЗрд╕реЗ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдирд╣реАрдВ рдмрдирд╛ рд░рд╣реЗ рд╣реЛрдВ) рджреГрд╢реНрдп рдореЗрдВ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП; рдЕрдиреБрдкреНрд░рдпреЛрдЧ рддрд░реНрдХ рдХреЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рдХреБрдЫ рднреА рджреГрд╢реНрдп рдореЙрдбрд▓ рдореЗрдВ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЪреВрдВрдХрд┐ рджреГрд╢реНрдп рдореЙрдбрд▓ рдХреЛ рджреГрд╢реНрдп рдореЗрдВ рдХреБрдЫ рджреГрд╢реНрдп рддрддреНрд╡реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреЛрдИ рд╕реНрдкрд╖реНрдЯ рдЬреНрдЮрд╛рди рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдХреЛрдб, рджреГрд╢реНрдп рдХреЗ рднреАрддрд░ рджреГрд╢реНрдп рддрддреНрд╡реЛрдВ рдХреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдореЗрдЯрд┐рдХ рд░реВрдк рд╕реЗ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рджреГрд╢реНрдп рдХреЗ рдХреЛрдб-рдкреАрдЫреЗ рдпрд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рдХреВрдЯрдмрджреНрдз рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕реА рддрд░рд╣, рдбреЗрдЯрд╛ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдбреЗрдЯрд╛ рддрддреНрд╡реЛрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдпрд╛ рд╣реЗрд░рдлреЗрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдХреЛ рд╡реНрдпреВ рдореЙрдбрд▓ рдореЗрдВ рд░рд╣рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕реВрдЪреА рдмреЙрдХреНрд╕ рдореЗрдВ рдЪрдпрдирд┐рдд рдЖрдЗрдЯрдо рдХреЗ рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рд░рдВрдЧ рдХреЛ рджреГрд╢реНрдп рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдЪрдпрдирд┐рдд рдЖрдЗрдЯрдо рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдФрд░ рд▓рд┐рдВрдХ рдХреА рд╕реВрдЪреА рдХреЛ рдкреНрд░рд╕реНрддреБрддрд┐ рдореЙрдбрд▓ рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдореЙрдбрд▓ рд╡рд░реНрдЧ
рдПрдорд╡реАрд╡реАрдПрдо рдкреИрдЯрд░реНрди рдореЗрдВ рдореЙрдбрд▓ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рддрд░реНрдХ рдФрд░ рдбреЗрдЯрд╛ рдХреЛ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХрд░рддрд╛ рд╣реИред рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рддрд░реНрдХ рдХреЛ рдХрд┐рд╕реА рднреА рдЕрдиреБрдкреНрд░рдпреЛрдЧ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдбреЗрдЯрд╛ рдХреА рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрддрд┐ рдФрд░ рдкреНрд░рдмрдВрдзрди рдХреА рдЪрд┐рдВрддрд╛ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рдирд┐рдпрдо рдбреЗрдЯрд╛ рд╕реНрдерд┐рд░рддрд╛ рдФрд░ рд╡реИрдзрддрд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрддреБрд╖реНрдЯ рд╣реИрдВред рдкреБрди: рдкреНрд░рдпреЛрдЬреНрдп рдХреЛ рдЕрдзрд┐рдХрддрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореЙрдбрд▓ рдореЗрдВ рдкреНрд░рд╕реНрддреБрддрд┐-рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЬрд╛рдирдХрд╛рд░реА, рддрд░реНрдХ рдпрд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
рдПрдХ рдирд┐рдпрдо рдХреЗ рд░реВрдк рдореЗрдВ, рдореЙрдбрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдХреНрд▓рд╛рдЗрдВрдЯ рднрд╛рдЧ рдХреЗ рд╡рд┐рд╖рдп рдХреНрд╖реЗрддреНрд░ рдХреЗ рд╕рд╛рд░ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдореЗрдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдбреЗрдЯрд╛ рдореЙрдбрд▓ рдФрд░ рдХрд┐рд╕реА рднреА рд╡реНрдпрд╡рд╕рд╛рдп рдФрд░ рд╕рддреНрдпрд╛рдкрди рддрд░реНрдХ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдПрдВ рд╣реЛ рд╕рдХрддреА рд╣реИрдВред рдореЙрдбрд▓ рдореЗрдВ рдбреЗрдЯрд╛ рдФрд░ рдХреИрд╢ рддрдХ рдкрд╣реБрдВрдЪ рднреА рд╣реЛ рд╕рдХрддреА рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдЖрдорддреМрд░ рдкрд░ рдПрдХ рдЕрд▓рдЧ рдбреЗрдЯрд╛ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА, рдпрд╛ рд╕рдВрдмрдВрдзрд┐рдд рд╕реЗрд╡рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЕрдХреНрд╕рд░, рдореЙрдбрд▓ рдФрд░ рдбреЗрдЯрд╛ рдПрдХреНрд╕реЗрд╕ рд▓реЗрдпрд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ ADO.NET рдПрдВрдЯрд┐рдЯреА рдлреНрд░реЗрдорд╡рд░реНрдХ, WCF рдбреЗрдЯрд╛ рд╕рд░реНрд╡рд┐рд╕реЗрдЬ рдпрд╛ WCF RIA рд╕рд░реНрд╡рд┐рд╕реЗрдЬ рдЗрдиреНрдлреНрд░рд╛рд╕реНрдЯреНрд░рдХреНрдЪрд░ рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИред
рдЖрдорддреМрд░ рдкрд░, рдПрдХ рдореЙрдбрд▓ рдЙрдкрдХрд░рдг рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдПрдХ рджреГрд╢реНрдп рдХреЛ рдмрд╛рдВрдзрдирд╛ рдЖрд╕рд╛рди рдмрдирд╛рддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдЖрдорддреМрд░ рдкрд░ рдЕрд░реНрде рд╣реИ рдХрд┐ рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рдпрд╛ рд╕рдВрдЧреНрд░рд╣реЛрдВ рдореЗрдВ рдмрджрд▓рд╛рд╡ рдХреА рд╕реВрдЪрдирд╛рдУрдВ рдХрд╛ рд╕рдорд░реНрдерди
INotifyCollectionChanged
рдФрд░
INotifyCollectionChanged
рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд┐рдпрд╛
INotifyCollectionChanged
ред рдореЙрдбрд▓ рд╡рд░реНрдЧ рдЬреЛ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд╕реЗрдЯ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВ, рд╡реЗ рдЖрдорддреМрд░ рдкрд░
INotifyCollectionChanged
ObservableCollection<T>
рд╡рд░реНрдЧ рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддреЗ рд╣реИрдВ, рдЬреЛ рдХрд┐
INotifyCollectionChanged
рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдореЙрдбрд▓
IDataErrorInfo
(рдпрд╛
INotifyDataErrorInfo
) рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдбреЗрдЯрд╛ рд╕рддреНрдпрд╛рдкрди рдФрд░ рддреНрд░реБрдЯрд┐ рд░рд┐рдкреЛрд░реНрдЯрд┐рдВрдЧ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдпреЗ рдЗрдВрдЯрд░рдлреЗрд╕ рдЖрдкрдХреЛ рдмрд╛рдзреНрдп рдбреЗрдЯрд╛ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЛ UI рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП WPF рдФрд░ рд╕рд┐рд▓реНрд╡рд░рд▓рд╛рдЗрдЯ рд╕реВрдЪрдирд╛рдПрдВ рднреЗрдЬрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рд╡реЗ рдпреВрдЖрдИ рд╕реНрддрд░ рдкрд░ рдбреЗрдЯрд╛ рд╕рддреНрдпрд╛рдкрди рд╕рдорд░реНрдерди рдФрд░ рддреНрд░реБрдЯрд┐ рд░рд┐рдкреЛрд░реНрдЯрд┐рдВрдЧ рднреА рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВред
рдЯрд┐рдкреНрдкрдгреА
, ?
рдХрднреА-рдХрднреА рдЖрдкрдХреЛ рдЙрди рдореЙрдбрд▓ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА рдЬреЛ рдЗрдВрдЯрд░рдлреЗрд╕ INotifyCollectionChanged
, IDataErrorInfo
, IDataErrorInfo
, рдпрд╛ INotifyDataErrorInfo
рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рдЗрди рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рджреГрд╢реНрдп рдореЙрдбрд▓ рдХреЛ рдореЙрдбрд▓ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЛ рд▓рдкреЗрдЯрдиреЗ рдФрд░ рджреГрд╢реНрдп рдХреЛ рдЖрд╡рд╢реНрдпрдХ рдЧреБрдг рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИред рдЗрди рдЧреБрдгреЛрдВ рдХреЗ рд▓рд┐рдП рдорд╛рди рд╕реАрдзреЗ рдореЙрдбрд▓ рдСрдмреНрдЬреЗрдХреНрдЯ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд┐рдП рдЬрд╛рдПрдВрдЧреЗред рдПрдХ рджреГрд╢реНрдп рдореЙрдбрд▓ рдЙрди рдЧреБрдгреЛрдВ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдЗрд╕реЗ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рддрд╛рдХрд┐ рджреГрд╢реНрдп рдЖрд╕рд╛рдиреА рд╕реЗ рдбреЗрдЯрд╛ рдХреЛ рдмрд╛рдВрдз рд╕рдХреЗред
рдореЙрдбрд▓ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреНрд░рдореБрдЦ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рд╣реИрдВ:
- рдореЙрдбрд▓ рдХрдХреНрд╖рд╛рдПрдВ рджреГрд╢реНрдп рдХрдХреНрд╖рд╛рдПрдВ рдирд╣реАрдВ рд╣реИрдВ рдЬреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдбреЗрдЯрд╛ рдФрд░ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рддрд░реНрдХ рдХреЛ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХрд░рддреА рд╣реИрдВред рд╡реЗ рдЖрд╡реЗрджрди рдбреЗрдЯрд╛ рдХреЗ рдкреНрд░рдмрдВрдзрди рдФрд░ рдЖрд╡рд╢реНрдпрдХ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рдирд┐рдпрдореЛрдВ рдФрд░ рдбреЗрдЯрд╛ рд╕рддреНрдпрд╛рдкрди рддрд░реНрдХ рдХреЛ рд╕рдВрд▓рдЧреНрди рдХрд░рдХреЗ рдЕрдкрдиреА рд╕реНрдерд┐рд░рддрд╛ рдФрд░ рд╡реИрдзрддрд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИрдВред
- рдореЙрдбрд▓ рдХрдХреНрд╖рд╛рдПрдВ рд╕реАрдзреЗ рдкреНрд░рд╕реНрддреБрддрд┐ рдХрдХреНрд╖рд╛рдУрдВ рдпрд╛ рдкреНрд░рд╕реНрддреБрддрд┐ рдореЙрдбрд▓ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдирд╣реАрдВ рдХрд░рддреА рд╣реИрдВ рдФрд░ рдЗрди рдХрдХреНрд╖рд╛рдУрдВ рдХреЛ рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕ рдкрд░ рдХреЛрдИ рдирд┐рд░реНрднрд░рддрд╛ рдирд╣реАрдВ рд╣реИред
- рдореЙрдбрд▓ рдХрдХреНрд╖рд╛рдПрдВ рдЖрдорддреМрд░ рдкрд░
INotifyCollectionChanged
рдФрд░ INotifyCollectionChanged
рдорд╛рдзреНрдпрдо рд╕реЗ рдЧреБрдгреЛрдВ рдпрд╛ рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХреА рд╕реВрдЪрдирд╛ рдкреНрд░рджрд╛рди рдХрд░рддреА рд╣реИрдВред рдЗрд╕рд╕реЗ рд╡реЗ рдЖрд╕рд╛рдиреА рд╕реЗ рдкреНрд░рд╕реНрддреБрддрд┐ рд╕реЗ рдЬреБрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред рдореЙрдбрд▓ рдХрдХреНрд╖рд╛рдПрдВ рдЬреЛ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд╕рдВрдЧреНрд░рд╣ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддреА рд╣реИрдВ, рд╡реЗ рдЖрдорддреМрд░ рдкрд░ ObservableCollection<T>.
рд╡рд░реНрдЧ рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓реА рд╣реИрдВ ObservableCollection<T>.
- рдореЙрдбрд▓ рдХрдХреНрд╖рд╛рдПрдВ рдЖрдорддреМрд░ рдкрд░
IDataErrorInfo
, рдпрд╛ INotifyDataErrorInfo
рдорд╛рдзреНрдпрдо рд╕реЗ рдбреЗрдЯрд╛ рд╕рддреНрдпрд╛рдкрди рдФрд░ рддреНрд░реБрдЯрд┐ рд░рд┐рдкреЛрд░реНрдЯрд┐рдВрдЧ рдкреНрд░рджрд╛рди рдХрд░рддреА рд╣реИрдВред - рдореЙрдбрд▓ рдХрдХреНрд╖рд╛рдПрдВ рдЖрдорддреМрд░ рдкрд░ рдПрдХ рд╕реЗрд╡рд╛ рдпрд╛ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рддреА рд╣реИрдВ рдЬреЛ рдбреЗрдЯрд╛ рдПрдХреНрд╕реЗрд╕ рдФрд░ рдХреИрд╢рд┐рдВрдЧ рдХреЛ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХрд░рддреА рд╣реИрдВред
рдХрдХреНрд╖рд╛ рдХреА рдмрд╛рддрдЪреАрдд
рдПрдорд╡реАрд╡реАрдПрдо рдкреИрдЯрд░реНрди рдкреНрд░рддреНрдпреЗрдХ рддрддреНрд╡ рдХреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╡рд░реНрдЧреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рддреЗ рд╣реБрдП, рдЖрдкрдХреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕, рдЗрд╕рдХреА рдкреНрд░рд╕реНрддреБрддрд┐ рддрд░реНрдХ рдФрд░ рдЗрд╕рдХреЗ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рддрд░реНрдХ рдФрд░ рдбреЗрдЯрд╛ рдХреЗ рдмреАрдЪ рдЬрд┐рдореНрдореЗрджрд╛рд░рд┐рдпреЛрдВ рдХрд╛ рдПрдХ рд╕реНрд╡рдЪреНрдЫ рдкреГрдердХреНрдХрд░рдг рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдЬрдм рдЖрдк рдПрдорд╡реАрд╡реАрдПрдо рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдХреЛрдб рдХреЛ рд╕рд╣реА рд╡рд░реНрдЧреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдкрд┐рдЫрд▓реЗ рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╣реИред
рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдП рдЧрдП рдкреНрд░реЗрдЬреЗрдВрдЯреЗрд╢рди рдХреНрд▓рд╛рд╕реЗрд╕, рдкреНрд░реЗрдЬреЗрдВрдЯреЗрд╢рди рдореЙрдбрд▓ рдФрд░ рдореЙрдбрд▓ рди рдХреЗрд╡рд▓ рд╕рд╣реА рд▓реЙрдЬрд┐рдХ рдФрд░ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдПрдирдХреИрдкреНрд╕реБрд▓реЗрдЯ рдХрд░реЗрдВрдЧреЗ, рдЙрдиреНрд╣реЗрдВ рдбреЗрдЯрд╛ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ, рдХрдорд╛рдВрдбреНрд╕ рдФрд░ рдбреЗрдЯрд╛ рд╡реЗрд▓рд┐рдбреЗрд╢рди рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЖрд╕рд╛рдиреА рд╕реЗ рдПрдХ-рджреВрд╕рд░реЗ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдкреНрд░рд╕реНрддреБрддрд┐ рдФрд░ рдЗрд╕рдХреЗ рдкреНрд░рд╕реНрддреБрддрд┐ рдореЙрдбрд▓ рдХреЗ рдмреАрдЪ рдХреА рдмрд╛рддрдЪреАрдд рд╢рд╛рдпрдж рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ, рд▓реЗрдХрд┐рди рдореЙрдбрд▓ рдХрдХреНрд╖рд╛рдУрдВ рдФрд░ рдкреНрд░рд╕реНрддреБрддрд┐ рдореЙрдбрд▓ рдХреЗ рдмреАрдЪ рдмрд╛рддрдЪреАрдд рднреА рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИрдВред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЕрдиреБрднрд╛рдЧ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреЗ рдЗрди рдЗрдВрдЯрд░реИрдХреНрд╢рди рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдПрдорд╡реАрд╡реАрдПрдо рдкреИрдЯрд░реНрди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдХреЗ рдЙрдиреНрд╣реЗрдВ рдХреИрд╕реЗ рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПред
рдбреЗрдЯрд╛ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ
рдПрдорд╡реАрд╡реАрдПрдо рдкреИрдЯрд░реНрди рдореЗрдВ рдбреЗрдЯрд╛ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рднреВрдорд┐рдХрд╛ рдирд┐рднрд╛рддрд╛ рд╣реИред WPF рдФрд░ рд╕рд┐рд▓реНрд╡рд░рд▓рд╛рдЗрдЯ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдбреЗрдЯрд╛ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдХреНрд╖рдорддрд╛рдПрдВ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВред рдЖрдкрдХреА рдкреНрд░рд╕реНрддреБрддрд┐ рдореЙрдбрд▓ рдФрд░ (рдЖрджрд░реНрд╢ рд░реВрдк рд╕реЗ) рдЖрдкрдХреЗ рдореЙрдбрд▓ рд╡рд░реНрдЧреЛрдВ рдХреЛ рдбреЗрдЯрд╛ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЖрдорддреМрд░ рдкрд░, рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рд╕рд╣реА рдЗрдВрдЯрд░рдлреЗрд╕ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
рд╕рд┐рд▓реНрд╡рд░рд▓рд╛рдЗрдЯ рдФрд░ рдбрдмреНрд▓реНрдпреВрдкреАрдПрдл рдбреЗрдЯрд╛ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдХрдИ рдкреНрд░рдХрд╛рд░ рдХреЗ рдореЛрдб рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред рдПрдХ рддрд░рдлрд╝рд╛ рдбреЗрдЯрд╛ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдХреЗ рд╕рд╛рде, UI рдирд┐рдпрдВрддреНрд░рдг рдХреЛ рдПрдХ рджреГрд╢реНрдп рдореЙрдбрд▓ рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ рд╡реЗ рдкреНрд░рддрд┐рдкрд╛рджрди рдХрд░рддреЗ рд╕рдордп рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдбреЗрдЯрд╛ рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдкреНрд░рддрд┐рдмрд┐рдВрдмрд┐рдд рдХрд░реЗрдВред рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ UI рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХрд░рдиреЗ рдкрд░ рджреЛ-рддрд░рдлрд╝рд╛ рдбреЗрдЯрд╛ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдбреЗрдЯрд╛ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░ рджреЗрдЧрд╛ред
рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдкреНрд░рд╕реНрддреБрддрд┐ рдореЙрдбрд▓ рдореЗрдВ рдбреЗрдЯрд╛ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рд╣реЛрдиреЗ рдкрд░ UI рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЙрд╕реЗ рдПрдХ рдЙрдкрдпреБрдХреНрдд рдкрд░рд┐рд╡рд░реНрддрди рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдпрджрд┐ рдпрд╣ рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХрд┐рд╕ рдбреЗрдЯрд╛ рдХреЛ рдмрд╛рдзреНрдп рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рддреЛ рдЗрд╕реЗ
INotifyPropertyChanged
рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдпрджрд┐ рджреГрд╢реНрдп рдореЙрдбрд▓ рдХрд┐рд╕реА рд╕рдВрдЧреНрд░рд╣ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЙрд╕реЗ
INotifyCollectionChanged
рдХреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдпрд╛
INotifyCollectionChanged
ObservableCollection<T>
рд╡рд░реНрдЧ рд╕реЗ рдЗрдирд╣реЗрд░рд┐рдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ рдЗрд╕ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред рдпреЗ рджреЛрдиреЛрдВ рдЗрдВрдЯрд░рдлреЗрд╕ рдПрдХ рдРрд╕реА рдШрдЯрдирд╛ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдбреЗрдЯрд╛ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рд╣реЛрдиреЗ рдкрд░ рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИред рдЗрди рдШрдЯрдирд╛рдУрдВ рдХреЗ рдЙрддреНрдкрдиреНрди рд╣реЛрдиреЗ рдкрд░ рдХрд┐рд╕реА рднреА рд╕рдВрдмрдВрдзрд┐рдд рдирд┐рдпрдВрддреНрд░рдг рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдХрдИ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рджреГрд╢реНрдп рдореЙрдбрд▓ рдореЗрдВ рд╡реЗ рдЧреБрдг рд╣реЛрддреЗ рд╣реИрдВ рдЬреЛ рдСрдмреНрдЬреЗрдХреНрдЯ рд▓реМрдЯрд╛рддреЗ рд╣реИрдВ (рдЬреЛ рдмрджрд▓реЗ рдореЗрдВ, рдЕрддрд┐рд░рд┐рдХреНрдд рдСрдмреНрдЬреЗрдХреНрдЯ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЧреБрдг рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ)ред рдбреЗрдЯрд╛ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ WPF рдФрд░ рд╕рд┐рд▓реНрд╡рд░рд▓рд╛рдЗрдЯ
Path
рд╕рдВрдкрддреНрддрд┐ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдиреЗрд╕реНрдЯреЗрдб рдЧреБрдгреЛрдВ рдХреЗ рд▓рд┐рдП рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдкреНрд░рд╕реНрддреБрддрд┐ рдореЙрдбрд▓ рдкреНрд░рд╕реНрддреБрддрд┐ рдореЙрдбрд▓ рдпрд╛ рдореЙрдбрд▓ рдХреЗ рдЕрдиреНрдп рд╡рд░реНрдЧреЛрдВ рдХреЗ рд╕рдВрджрд░реНрднреЛрдВ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рддреЗ рд╣реИрдВред рдкреНрд░рд╕реНрддреБрддрд┐ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╕рднреА рдкреНрд░рд╕реНрддреБрддрд┐ рдореЙрдбрд▓ рдХрдХреНрд╖рд╛рдПрдВ рдФрд░ рдореЙрдбрд▓
INotifyCollectionChanged
рдпрд╛
INotifyCollectionChanged
рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЕрдиреБрднрд╛рдЧреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рд╣реИ рдХрд┐ рдПрдорд╡реАрд╡реАрдПрдо рдкреИрдЯрд░реНрди рдХреЗ рднреАрддрд░ рдбреЗрдЯрд╛ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдПред
INOTifyPropertyChanged рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди
рджреГрд╢реНрдп рдореЙрдбрд▓ рдпрд╛ рдореЙрдбрд▓ рдХреА рдХрдХреНрд╖рд╛рдУрдВ рдореЗрдВ
INotifyPropertyChanged
рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рд╕реЗ рдЙрдиреНрд╣реЗрдВ рдореВрд▓реНрдпреЛрдВ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рд╣реЛрдиреЗ рдкрд░ рд╕рдВрдмрдВрдзрд┐рдд рдирд┐рдпрдВрддреНрд░рдг рдХреЛ рд╕реВрдЪрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдорд┐рд▓рддреА рд╣реИред рдЗрд╕ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рд╕рд░рд▓ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ (
рдмреЗрд╕рд┐рдХ MVVM рдХреНрд╡рд┐рдХрд╕реНрдЯрд╛рд░реНрдЯ рдореЗрдВ
Questionnaire
рд╡рд░реНрдЧ рджреЗрдЦреЗрдВ)ред
public class Questionnaire : INotifyPropertyChanged { private string favoriteColor; public event PropertyChangedEventHandler PropertyChanged; ... public string FavoriteColor { get { return this.favoriteColor; } set { if (value != this.favoriteColor) { this.favoriteColor = value; if (this.PropertyChanged != null) { this.PropertyChanged(this, new PropertyChangedEventArgs("FavoriteColor")); } } } } }
рджреГрд╢реНрдп рдореЙрдбрд▓ рдХреЗ рдХрдИ рд╡рд░реНрдЧреЛрдВ рдореЗрдВ
INotifyPropertyChanged
рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рджреЛрд╣рд░рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рд╕рдВрдкрддреНрддрд┐ рдХреЗ рдирд╛рдо рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдХрд╛рд░рдг рддреНрд░реБрдЯрд┐ рд╣реЛ рд╕рдХрддреА рд╣реИред рдкреНрд░рд┐рдЬреНрдо рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдПрдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдЖрдзрд╛рд░ рд╡рд░реНрдЧ рдкреНрд░рджрд╛рди рдХрд░рддреА рд╣реИ рдЬрд┐рд╕рд╕реЗ рдЖрдк рдЕрдкрдиреЗ рджреГрд╢реНрдп рдореЙрдбрд▓ рд╡рд░реНрдЧреЛрдВ рдХреЛ рдЗрдирд╣реЗрд░рд┐рдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдХрд┐
INotifyPropertyChanged
рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рдПрдХ рд╕реБрд░рдХреНрд╖рд┐рдд рддрд░реАрдХреЗ рд╕реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдЬреИрд╕рд╛ рдХрд┐ рдиреАрдЪреЗ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред
public class NotificationObject : INotifyPropertyChanged { public event PropertyChangedEventHandler PropertyChanged; ... protected void RaisePropertyChanged<T>( Expression<Func<T>> propertyExpression) {...} protected virtual void RaisePropertyChanged(string propertyName) {...} }
рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рд╛ рд╣реБрдЖ рджреГрд╢реНрдп рдореЙрдбрд▓ рд╡рд░реНрдЧ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рдВрдкрддреНрддрд┐ рдХреЗ рдирд╛рдо рдХреЗ рд╕рд╛рде рдпрд╛ рдПрдХ рд▓реИрдореНрдмреНрдбрд╛ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдВрдкрддреНрддрд┐ рдореЗрдВ рдмрджрд▓рд╛рд╡ рдХреА рдШрдЯрдирд╛ рдЙрддреНрдкрдиреНрди рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ рд╕рдВрдкрддреНрддрд┐ рдХреЛ рдПрдХреНрд╕реЗрд╕ рдХрд░рддрд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдиреАрдЪреЗ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред
public string CurrentState { get { return this.currentState; } set { if (this.currentState != value) { this.currentState = value; this.RaisePropertyChanged(() => this.CurrentState); } } }
рдЯрд┐рдкреНрдкрдгреА
рдЗрд╕ рддрд░рд╣ рд╕реЗ рд▓реИрдореНрдмреНрдбрд╛ рдПрдХреНрд╕рдкреНрд░реЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рд╣рд▓реНрдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдиреБрдХрд╕рд╛рди рд╣реЛрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд▓реИрдореНрдмрдбрд╛ рдПрдХреНрд╕рдкреНрд░реЗрд╢рди рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдкреНрд░рддреНрдпреЗрдХ рдХреНрд╡реЗрд░реА рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рд▓рд╛рдн рдпрд╣ рд╣реИ рдХрд┐ рдЬрдм рдЖрдк рдХрд┐рд╕реА рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдирд╛рдо рдмрджрд▓рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕рдВрдХрд▓рди рдХреЗ рджреМрд░рд╛рди рд╕реБрд░рдХреНрд╖рд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред , , . , , .
рдЯрд┐рдкреНрдкрдгреА
Resharper , .
, . , , . , Price1, Price2 SumPrice, ,
Price1
Price2
RaisePropertyChanged(тАЬSumPriceтАЭ)
.
INotifyCollectionChanged
, , . , ,
ItemsControl
,
ListBox
,
DataGrid
. , , ,
ItemSource
.
<DataGrid ItemsSource="{Binding Path=LineItems}" />
, , ,
INotifyCollectionChanged
(
INotifyPropertyChanged
). , ,
INotifyCollectionChanged
.
INotifyCollectionChanged
, , , , , . , , , .
ObservableCollection<T>
, , .
, , , , , ,
ObservableCollection<T>
.
public class OrderViewModel : INotifyPropertyChanged { public OrderViewModel(IOrderService orderService) { this.LineItems = new ObservableCollection<OrderLineItem>( orderService.GetLineItemList()); } public ObservableCollection<OrderLineItem> LineItems { get; private set; } }
(, ,
INotifyCollectionChanged
),
ObservableCollection<T>
, ,
IEnumerable<T>
List<T>
.
ICollectionView ( )
, , , .
ObservableCollection<T>
INotifyCollectionChanged
, .
, , . , , , , , , , , .
WPF Silverlight , ,
ICollectionView
. , , , , , . Silverlight WPF , Silverlight
PagedCollectionView
, WPF тАФ
ListCollectionView
.
, , , , , . XAML,
CollectionViewSource
.
рдЯрд┐рдкреНрдкрдгреА
WPF CollectionView , . Silverlight , ICollectionViewFactory
.
, , UI . ,
CollectionViews
, , .
, , , , , , . ,
CurrentChanged
, , , , .
,
ICollectionView
, . WPF Silverlight,
ItemsControl
,
ICollectionView
.
PagedCollectionView
Silverlight , .
public class MyViewModel : INotifyPropertyChanged { public ICollectionView Customers { get; private set; } public MyViewModel(ObservableCollection<Customer> customers) { Customers = new PagedCollectionView(customers); Customers.CurrentChanged += new EventHandler(SelectedItemChanged); } private void SelectedItemChanged(object sender, EventArgs e) { Customer current = Customers.CurrentItem as Customer; ... } }
ItemsControl
,
ListBox
,
Customers
ItemsSource
, .
<ListBox ItemsSource="{Binding Path=Customers}"> <ListBox.ItemTemplate> <DataTemplate> <StackPanel> <TextBlock Text="{Binding Path=Name}"/> </StackPanel> </DataTemplate> </ListBox.ItemTemplate> </ListBox>
UI, , . UI, , .
Customers.MoveCurrentToNext();
, UI , . WPF,
PagedCollectionView
ListCollectionView
,
BindingListCollectionView
, .
Customers = new ListCollectionView(_model); Customers.CurrentChanged += new EventHandler(SelectedItemChanged);
, , , , , . WPF Silverlight, , UI, . , UI. , , .
. , , , , . , , , . UI . , UI, .
Command Method ,
Command Object (,
ICommand
). , , code-behind . , WPF Silverlight
Command
,
ICommand
. ,
CommandBehavior
.
рдЯрд┐рдкреНрдкрдгреА
, , . CommandBehavior
, .
, , .
Command Objects
,
ICommand
.
Execute
, ,
CanExecute
, , . . , .
ICommand
. , . ,
ActionCommand
SDK Expression Blend,
DelegateCommand
, Prism.
DelegateCommand
, , .
DelegateCommandBase
,
Execute
CanExecute
ICommand
, .
DelegateCommand
, .
public class DelegateCommand<T> : DelegateCommandBase { public DelegateCommand(Action<T> executeMethod, Func<T,bool> canExecuteMethod) :base((o) => executeMethod((T)o), (o) => canExecuteMethod((T)o)) { ... } }
, ,
DelegateCommand
,
Submit
, ,
OnSubmit
CanSubmit
. ,
ICommand
.
public class QuestionnaireViewModel { public QuestionnaireViewModel() { this.SubmitCommand = new DelegateCommand<object>( this.OnSubmit, this.CanSubmit); } public ICommand SubmitCommand { get; private set; } private void OnSubmit(object arg) {...} private bool CanSubmit(object arg) { return true; } }
Execute
DelegateCommand
, , . ,
CanExecute
, .
CanExecute
. ,
DelegateCommand
true
CanExecute
.
DelegateCommand
. ,
Execute
CanExecute
.
object
.
DelegateCommand
Prism , .
CanExecute
,
RaiseCanExecuteChanged
DelegateCommand
.
CanExecuteChanged
. UI, , , .
ICommand
.
ActionCommand
SDK Expression Blend, Prism
DelegateCommand
, ,
Execute
. Prism
CompositeCommand
,
DelegateCommands
.
CompositeCommand
, . ┬л ┬╗ 6, ┬л MVVM┬╗.
, , . WPF Silverlight 4,
ButtonBase
,
Button
,
RadioButton
,
Hyperlink
,
MenuItem
,
Command
. WPF
ICommand
KeyGesture
.
<Button Command="{Binding Path=SubmitCommand}" CommandParameter="SubmitOrder"/>
,
CommandParameter
.
Execute
CanExecute
. , , , ,
Execute
.
SubmitCommand
, . ,
CanExecute
, ,
CanExecute
false
,
true
.
Expression Blend
InvokeCommandAction
.
<Button Content="Submit" IsEnabled="{Binding CanSubmit}"> <i:Interaction.Triggers> <i:EventTrigger EventName="Click"> <i:InvokeCommandAction Command="{Binding SubmitCommand}"/> </i:EventTrigger> </i:Interaction.Triggers> </Button>
, . , ,
ButtonBase
, . , ,
CommandParameter
.
, ,
InvokeCommandAction
,
CanExecute
. ,
IsEnabled
, , , .
рдЯрд┐рдкреНрдкрдгреА
WPF Silverlight 4, . , . , Button
, , . , , .
. , , , . , , , .
, , . , , .
, , . , UI Expression Blend, ( ) - , Expression Blend.
ICommand
, , .
, . , ,
InvokeCommandAction
,
CallMethodAction
. ( )
Submit
.
<Button Content="Submit" IsEnabled="{Binding CanSubmit}"> <i:Interaction.Triggers> <i:EventTrigger EventName="Click"> <i:CallMethodAction TargetObject="{Binding}" Method="Submit"/> </i:EventTrigger> </i:Interaction.Triggers> </Button>
TargetObject
( )
{Binding}
.
Method
.
рдЯрд┐рдкреНрдкрдгреА
CallMethodAction
. , , InvokeCommandAction
, CallMethodAction
, .
, .
Silverlight WPF , , . , , set , .
ValidatesOnExceptions
true
, WPF Silverlight .
, , , , .
IDataErrorInfo
INotifyDataErrorInfo
. , .
IDataErrorInfo
IDataErrorInfo
. : , ,
Error
. .
, . , . Error . , Silverlight WPF.
IDataErrorInfo
, , , . , , , , , .
,
IDataErrorInfo
,
ValidatesOnDataErrors
true
. , .
<TextBox Text="{Binding Path=CurrentEmployee.Name, Mode=TwoWay, ValidatesOnDataErrors=True, NotifyOnValidationError=True }"/>
INotifyDataErrorInfo
INotifyDataErrorInfo
,
IDataErrorInfo
. , , . ,
INotifyDataErrorInfo
Silverlight 4 WPF 4.
рдЯрд┐рдкреНрдкрдгреА
WPF .NET Framework 4.5.
INotifyDataErrorInfo
HasErrors
, , ( ) - ,
GetErrors
, .
INotifyDataErrorInfo
ErrorsChanged
. ,
ErrorsChanged
. , , , , - .
ErrorsChanged
, .
INotifyDataErrorInfo
, .
Model-View-ViewModel Reference Implementation (MVVM RI) ErrorsContainer
, . , .
DomainObject
( )
INotifyDataErrorInfo
,
ErrorsContainer
.
public abstract class DomainObject : INotifyPropertyChanged, INotifyDataErrorInfo { private ErrorsContainer<ValidationResult> errorsContainer = new ErrorsContainer<ValidationResult>( pn => this.RaiseErrorsChanged(pn)); public event EventHandler<DataErrorsChangedEventArgs> ErrorsChanged; public bool HasErrors { get { return this.ErrorsContainer.HasErrors; } } public IEnumerable GetErrors(string propertyName) { return this.errorsContainer.GetErrors(propertyName); } protected void RaiseErrorsChanged(string propertyName) { var handler = this.ErrorsChanged; if (handler != null) { handler(this, new DataErrorsChangedEventArgs(propertyName)); } } ... }
Silverlight , ,
INotifyDataErrorInfo
, .
MVVM UI , - , . . , , , .
рдЯрд┐рдкреНрдкрдгреА
, . Managed Extensibility Framework (MEF) Unity Application Block (Unity) , , . , . 6, ┬л MVVM┬╗.
, . . , , . ,
DataContext
.
, . , . , .
рдЯрд┐рдкреНрдкрдгреА
, , , , - . , , , , Visual Studio .
, . , , . , , .
XAML
, тАФ XAML. , . XAML, .
XAML
QuestionnaireView.xaml
Basic MVVM QuickStart.
QuestionnaireViewModel
XAML
QuestionnaireView
, .
<UserControl.DataContext> <my:QuestionnaireViewModel/> </UserControl.DataContext>
QuestionnaireView
,
QuestionnaireViewModel
. , ( ).
, , Microsoft Expression Blend Microsoft Visual Studio. , .
. , .
public QuestionnaireView() { InitializeComponent(); this.DataContext = new QuestionnaireViewModel(); }
code-behind , , Expression Blend Visual Studio. , , code-behind . , Unity MEF, . , . 3, ┬л .┬╗
,
, . , , , . ┬л┬╗ , . WPF Silverlight , . , , тАФ .
. UI , , - . , UI (code-behind). , Microsoft Expression Blend.
ItemsControl
, . . .
StackPanel
,
Name
.
<ItemsControl ItemsSource="{Binding Customers}"> <ItemsControl.ItemTemplate> <DataTemplate> <StackPanel Orientation="Horizontal"> <TextBlock VerticalAlignment="Center" Text="Customer Name: " /> <TextBox Text="{Binding Name}" /> </StackPanel> </DataTemplate> </ItemsControl.ItemTemplate> </ItemsControl>
. ,
StaticResource
.
<UserControl ...> <UserControl.Resources> <DataTemplate x:Key="CustomerViewTemplate"> <local:CustomerContactView /> </DataTemplate> </UserControl.Resources> <Grid> <ContentControl Content="{Binding Customer}" ContentTemplate="{StaticResource CustomerViewTemplate}" /> </Grid> </Window>
, , code-behind. , , .
UserControl
,
ResourceDictionary
. ,
QuickStart MVVM QuestionnaireView.xaml
.
рдкреНрд░рдореБрдЦ рдирд┐рд░реНрдгрдп
MVVM , , . , , . MVVM:
- , . , , , Unity MEF. , . , . , ┬лAdvanced Construction and Wire-Up┬╗ ┬лAdvanced MVVM Scenarios┬╗ 6, ┬лAdvanced MVVM Scenarios.┬╗
- , . . /
Command
ButtonBase
. , . , ┬л┬╗ . - , .
IDataErrorInfo
, INotifyDataErrorInfo
. , , , , . , ┬л ┬╗ . - , Microsoft Expression Blend . Expression Blend UI , , , . , , Microsoft Expression Blend, ,
d:DataContext
d:DesignSource
. , ┬лGuidelines for Creating Designer Friendly Views┬╗ 7 ┬лComposing the User Interface┬╗.
рдЕрддрд┐рд░рд┐рдХреНрдд рдЬрд╛рдирдХрд╛рд░реА
WPF, ┬лData Binding┬╗ MSDN:
http://msdn.microsoft.com/en-us/library/ms750612.aspx .
Silverlight, ┬лData Binding┬╗ MSDN:
http://msdn.microsoft.com/en-us/library/cc278072(VS.95).aspx .
WPF, ┬лBinding to Collections┬╗ ┬лData Binding Overview┬╗ MSDN:
http://msdn.microsoft.com/en-us/library/ms752347.aspx .
Silverlight, ┬лBinding to Collections┬╗ ┬лData Binding┬╗ MSDN:
http://msdn.microsoft.com/en-us/library/cc278072(VS.95).aspx .
Presentation Model, ┬лPresentation Model┬╗ :
http://www.martinfowler.com/eaaDev/PresentationModel.html, ┬лData Templating Overview┬╗ MSDN:
http://msdn.microsoft.com/en-us/library/ms742521.aspxMEF, ┬лManaged Extensibility Framework Overview┬╗ MSDN:
http://msdn.microsoft.com/en-us/library/dd460648.aspxUnity, ┬лUnity Application Block┬╗ MSDN:
http://www.msdn.com/unityDelegateCommand
CompositeCommand
, 9, "
Communicating Between Loosely Coupled Components ."