рдкреНрд░рд┐рдЬреНрдо рдбреЗрд╡рд▓рдкрд░ рдХреА рдЧрд╛рдЗрдб - рднрд╛рдЧ 5, рдПрдорд╡реАрд╡реАрдПрдо рдкреИрдЯрд░реНрди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛

рд╕рд╛рдордЧреНрд░реА рдХреА рддрд╛рд▓рд┐рдХрд╛
  1. рдкрд░рд┐рдЪрдп
  2. рдкреНрд░рд╛рд░рдореНрднрд┐рдХ рдкреНрд░рд┐рдЬреНрдо рдЕрдиреБрдкреНрд░рдпреЛрдЧ
  3. рдШрдЯрдХреЛрдВ рдХреЗ рдмреАрдЪ рдирд┐рд░реНрднрд░рддрд╛ рдХрд╛ рдкреНрд░рдмрдВрдзрди
  4. рдореЙрдбреНрдпреВрд▓рд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╡рд┐рдХрд╛рд╕
  5. рдПрдорд╡реАрд╡реАрдПрдо рдкреИрдЯрд░реНрди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛
  6. рдЙрдиреНрдирдд MVVM рдкрд░рд┐рджреГрд╢реНрдп
  7. рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдирд┐рд░реНрдорд╛рдг
    1. рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рджрд┐рд╢рд╛рдирд┐рд░реНрджреЗрд╢
  8. рдиреЗрд╡рд┐рдЧреЗрд╢рди
    1. рджреГрд╢реНрдп-рдЖрдзрд╛рд░рд┐рдд рдиреЗрд╡рд┐рдЧреЗрд╢рди
  9. рд╢рд┐рдерд┐рд▓ рдпреБрдЧреНрдорд┐рдд рдШрдЯрдХреЛрдВ рдХреЗ рдмреАрдЪ рдкрд╛рд░рд╕реНрдкрд░рд┐рдХ рдХреНрд░рд┐рдпрд╛

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

рдПрдорд╡реАрд╡реАрдПрдо рдкреИрдЯрд░реНрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдпреВрдЬрд░ рдЗрдВрдЯрд░рдлреЗрд╕, рдкреНрд░реЗрдЬреЗрдВрдЯреЗрд╢рди рд▓реЙрдЬрд┐рдХ рдФрд░ рдмрд┐рдЬрдиреЗрд╕ рд▓реЙрдЬрд┐рдХ рдХреЛ рддреАрди рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╡рд░реНрдЧреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрд╣ рдПрдХ рджреГрд╢реНрдп рд╣реИ рдЬреЛ UI рдФрд░ рдЙрд╕рдХреЗ рддрд░реНрдХ рдХреЛ рдЬреЛрдбрд╝рддрд╛ рд╣реИ, рдПрдХ рджреГрд╢реНрдп рдореЙрдбрд▓ рдЬреЛ рдкреНрд░рд╕реНрддреБрддрд┐ рддрд░реНрдХ рдФрд░ рдЙрд╕рдХреЗ рд░рд╛рдЬреНрдп рдХреЛ рдШреЗрд░рддрд╛ рд╣реИ, рдФрд░ рдПрдХ рдореЙрдбрд▓ рдЬреЛ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреЗ рд╡реНрдпрд╛рдкрд╛рд░ рддрд░реНрдХ рдФрд░ рдбреЗрдЯрд╛ рдХреЛ рдШреЗрд░рддрд╛ рд╣реИред

рдкреНрд░рд┐рдЬреНрдо рдореЗрдВ рдЙрджрд╛рд╣рд░рдг рдФрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдЙрджрд╛рд╣рд░рдг рд╢рд╛рдорд┐рд▓ рд╣реИрдВ рдЬреЛ рджрд┐рдЦрд╛рддреЗ рд╣реИрдВ рдХрд┐ рдПрдорд╡реАрд╡реАрдПрдо рдкреИрдЯрд░реНрди рдХреЛ рд╕рд┐рд▓реНрд╡рд░рд▓рд╛рдЗрдЯ рдпрд╛ рдбрдмреНрд▓реНрдпреВрдкреАрдПрдл рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдПред рдкреНрд░рд┐рдЬреНрдо рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдРрд╕реА рд╕реБрд╡рд┐рдзрд╛рдПрдБ рднреА рдкреНрд░рджрд╛рди рдХрд░рддреА рд╣реИ рдЬреЛ рдЗрд╕ рдкреИрдЯрд░реНрди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░ рд╕рдХрддреА рд╣реИрдВред рдпреЗ рд╕реБрд╡рд┐рдзрд╛рдПрдБ MVVM рдкреИрдЯрд░реНрди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЖрдо рддрд░реАрдХреЗ рд╣реИрдВ рдФрд░ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдмреНрд▓реЗрдВрдб рдФрд░ рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЗ рд╕рд╛рде рдкрд░реАрдХреНрд╖рдг рдФрд░ рдЕрдиреБрдХреВрд▓рддрд╛ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХреА рдЧрдИ рд╣реИрдВред

рдпрд╣ рдЕрдзреНрдпрд╛рдп MVVM рдкреИрдЯрд░реНрди рдХрд╛ рдЕрд╡рд▓реЛрдХрди рджреЗрддрд╛ рд╣реИ рдФрд░ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдПред рдЕрдзреНрдпрд╛рдп 6 рдореЗрдВ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдкреНрд░рд┐рдЬреНрдо рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдПрдорд╡реАрд╡реАрдПрдо рд▓рд┐рдкрд┐рдпреЛрдВ рдХреЛ рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдПред

рдЬрд┐рдореНрдореЗрджрд╛рд░рд┐рдпреЛрдВ рдФрд░ рд╡рд░реНрдЧ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ


рдПрдорд╡реАрд╡реАрдПрдо рдкреИрдЯрд░реНрди рдкреНрд░реЗрдЬреЗрдВрдЯреЗрд╢рди рдореЙрдбрд▓ рдкреИрдЯрд░реНрди рдХреА рдПрдХ рдХрд░реАрдмреА рднрд┐рдиреНрдирддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдХреБрдЫ рдмреБрдирд┐рдпрд╛рджреА WPF рдФрд░ рд╕рд┐рд▓реНрд╡рд░рд▓рд╛рдЗрдЯ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдмреЗрд╣рддрд░ рд╕рдВрд░реЗрдЦрдг рдХреЗ рд▓рд┐рдП рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬреИрд╕реЗ рдбреЗрдЯрд╛ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ, рдбреЗрдЯрд╛ рдкреИрдЯрд░реНрди, рдХрдорд╛рдВрдб рдФрд░ рд╡реНрдпрд╡рд╣рд╛рд░ред

MVVM рдкреИрдЯрд░реНрди рдореЗрдВ, рдПрдХ рджреГрд╢реНрдп UI рдФрд░ рдХрд┐рд╕реА рднреА UI рддрд░реНрдХ рдХреЛ рдПрдирдХреИрдкреНрд╕реБрд▓реЗрдЯ рдХрд░рддрд╛ рд╣реИ, рдПрдХ рджреГрд╢реНрдп рдореЙрдбрд▓ рдкреНрд░рд╕реНрддреБрддрд┐ рддрд░реНрдХ рдФрд░ рдЙрд╕рдХреЗ рд░рд╛рдЬреНрдп рдХреЛ рдЗрдирдХреИрдкреНрд╕реБрд▓реЗрдЯ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдореЙрдбрд▓ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рддрд░реНрдХ рдФрд░ рдбреЗрдЯрд╛ рдХреЛ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХрд░рддрд╛ рд╣реИред рдбреЗрдЯрд╛, рдЖрджреЗрд╢реЛрдВ рдФрд░ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдШрдЯрдирд╛рдУрдВ рдХреЛ рдмрд╛рдЗрдВрдб рдХрд░рдХреЗ рдПрдХ рджреГрд╢реНрдп рдореЙрдбрд▓ рдХреЗ рд╕рд╛рде рдПрдХ рджреГрд╢реНрдп рдХрд╛ рдЖрджрд╛рди-рдкреНрд░рджрд╛рди рд╣реЛрддрд╛ рд╣реИред рдкреНрд░рд╕реНрддреБрддрд┐ рдореЙрдбрд▓ рдореЙрдбрд▓ рд╕реЗ рдбреЗрдЯрд╛ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рддрд╛ рд╣реИ, рдпрд╛ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреА рд╕реВрдЪрдирд╛рдУрдВ рдХреА рд╕рджрд╕реНрдпрддрд╛ рд▓реЗрддрд╛ рд╣реИ, рдФрд░ рдЕрдкрдбреЗрдЯ рдХреЛ рдореЙрдбрд▓ рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╕рдордиреНрд╡рдпрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рддреЛ рдбреЗрдЯрд╛ рдХреЛ рджреГрд╢реНрдп рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкреБрд╖реНрдЯрд┐ рдФрд░ рдПрдХрддреНрд░ рдХрд░рддрд╛ рд╣реИред

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рджреГрд╖реНрдЯрд╛рдВрдд рдПрдорд╡реАрд╡реАрдПрдо рдкреИрдЯрд░реНрди рдХреЗ рддреАрди рднрд╛рдЧреЛрдВ рдФрд░ рдЙрдирдХреА рдмрд╛рддрдЪреАрдд рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИред

MVVM   .

рд╡рд┐рднрд╛рдЬрд┐рдд рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЗ рд╕рднреА рдкреИрдЯрд░реНрди рдХреЗ рд╕рд╛рде, MVVM рдкреИрдЯрд░реНрди рдХреЛ рдкреНрд░рднрд╛рд╡реА рдврдВрдЧ рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреБрдВрдЬреА рдпрд╣ рд╣реИ рдХрд┐ рдЕрдкрдиреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛрдб рдХреЛ рд╕рд╣реА рд╡рд░реНрдЧреЛрдВ рдореЗрдВ рдХреИрд╕реЗ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдП, рдФрд░ рдЗрди рд╡рд░реНрдЧреЛрдВ рдХреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдореЗрдВ рдмрд╛рддрдЪреАрдд рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЛрдВ рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдПред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЕрдиреБрднрд╛рдЧ MVVM рдкреИрдЯрд░реНрди рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рд╡рд░реНрдЧ рдХреА рдЬрд┐рдореНрдореЗрджрд╛рд░рд┐рдпреЛрдВ рдФрд░ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реИрдВред

рдХрдХреНрд╖рд╛ рджреЗрдЦреЗрдВ


рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реНрдХреНрд░реАрди рдкрд░ рдХреНрдпрд╛ рджреЗрдЦрддрд╛ рд╣реИ, рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджреГрд╢реНрдп рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИред рдЖрджрд░реНрд╢ рд░реВрдк рд╕реЗ, рдХреЛрдб-рдкреАрдЫреЗ рдХреЗ рджреГрд╢реНрдп рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рд╣реЛрддрд╛ рд╣реИ, рдЬреЛ рдХрд┐ InitializeComponent рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИред рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдХреЛрдб-рдкреАрдЫреЗ рдореЗрдВ рдпреВрдЖрдИ рд▓реЙрдЬрд┐рдХ рдХреЛрдб рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдПрдХреНрд╕рдПрдПрдордПрд▓ рдореЗрдВ рд╡реНрдпрдХреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдард┐рди рдпрд╛ рдЕрдкреНрд░рднрд╛рд╡реА рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ рдЬрдЯрд┐рд▓ рдПрдирд┐рдореЗрд╢рди, рдпрд╛ рдЬрдм рдХреЛрдб рдХреЛ рджреГрд╢реНрдп рддрддреНрд╡реЛрдВ рдХрд╛ рд╕реАрдзреЗ рдирд┐рдпрдВрддреНрд░рдг рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ рдХрд┐ рджреГрд╢реНрдп рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИрдВред рдпрд╣ рддрд░реНрдХ рдХреЛрдб рдбрд╛рд▓рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рд╣реИ рдЬреЛ рдПрдХ рджреГрд╢реНрдп рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЖрдорддреМрд░ рдкрд░, рдпреВрдЖрдИ рдСрдЯреЛрдореЗрд╢рди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреЛрдб-рдмреИрдХ рд╡реНрдпреВ рдореЗрдВ рдХреЛрдб рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рд╕рд┐рд▓реНрд╡рд░рд▓рд╛рдЗрдЯ рдФрд░ рдбрдмреНрд▓реНрдпреВрдкреАрдПрдл рдореЗрдВ, рдПрдХ рджреГрд╢реНрдп рдореЗрдВ рдбреЗрдЯрд╛ рдмрд╛рдзреНрдпрдХрд╛рд░реА рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдЗрд╕рдХреЗ рдбреЗрдЯрд╛ рд╕рдВрджрд░реНрдн рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред MVVM рдореЗрдВ, рдкреНрд░рд╕реНрддреБрддрд┐ рдореЙрдбрд▓ рдХреЛ рдкреНрд░рд╕реНрддреБрддрд┐ рдбреЗрдЯрд╛ рдХреЗ рд╕рдВрджрд░реНрдн рдХреЗ рд░реВрдк рдореЗрдВ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рджреГрд╢реНрдп рдореЙрдбрд▓ рдЙрди рдЧреБрдгреЛрдВ рдФрд░ рдЖрджреЗрд╢реЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рдирдХреЗ рд▓рд┐рдП рджреГрд╢реНрдп рдмрд╛рдзреНрдп рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдкрд░рд┐рд╡рд░реНрддрди рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдШрдЯрдирд╛рдУрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд┐рд╕реА рднреА рд░рд╛рдЬреНрдп рдХреЗ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рджреГрд╢реНрдп рдХреЛ рд╕реВрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИред рдЖрдорддреМрд░ рдкрд░ рдПрдХ рджреГрд╢реНрдп рдФрд░ рдЙрд╕рдХреЗ рдкреНрд░рд╕реНрддреБрддрд┐ рдореЙрдбрд▓ рдХреЗ рдмреАрдЪ рд╕реАрдзрд╛ рд╕рдВрдмрдВрдз рд╣реЛрддрд╛ рд╣реИред

рдЖрдорддреМрд░ рдкрд░, рджреГрд╢реНрдп Control рдпрд╛ UserControl рд╡рд░реНрдЧреЛрдВ рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓реЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдкреНрд░рд╕реНрддреБрддрд┐ рдХреЛ рдПрдХ рдбреЗрдЯрд╛ рдЯреЗрдореНрдкрд▓реЗрдЯ рджреНрд╡рд╛рд░рд╛ рджрд░реНрд╢рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдпреВрдЖрдИ рддрддреНрд╡реЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдиреЗрддреНрд░рд╣реАрди рд░реВрдк рд╕реЗ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдбреЗрдЯрд╛ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдбреЗрд╡рд▓рдкрд░ рдЖрд╕рд╛рдиреА рд╕реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдкреНрд░рд╕реНрддреБрддрд┐ рдореЙрдбрд▓ рдХреА рдХрд▓реНрдкрдирд╛ рдХреИрд╕реЗ рдХреА рдЬрд╛рдПрдЧреА, рдпрд╛ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдСрдмреНрдЬреЗрдХреНрдЯ рдпрд╛ рдЙрд╕рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рд╕реАрдзреЗ рдмрджрд▓реЗ рдмрд┐рдирд╛ рдЕрдкрдиреЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рджреГрд╢реНрдп рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХреЛ рдмрджрд▓ рд╕рдХрддрд╛ рд╣реИред

рдбреЗрдЯрд╛ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдХреЛ рдЙрди рд╡рд┐рдЪрд╛рд░реЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬрд┐рдирдореЗрдВ рдХреЛрдб-рдкреАрдЫреЗ рдХреА рдХрдореА рд╣реИред рдЙрдиреНрд╣реЗрдВ рдХреБрдЫ рдкреНрд░рдХрд╛рд░ рдХреЗ рдкреНрд░рд╕реНрддреБрддрд┐ рдореЙрдбрд▓ рд╕реЗ рдмрд╛рдВрдзрдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдЬрдм рдЙрдиреНрд╣реЗрдВ UI рдкрд░ рдореИрдк рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рд░рди рдЯрд╛рдЗрдо рдХреЗ рджреМрд░рд╛рди, рдЯреЗрдореНрдкрд▓реЗрдЯ рджреНрд╡рд╛рд░рд╛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рджреГрд╢реНрдп, рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рд╕рдВрдмрдВрдзрд┐рдд рджреГрд╢реНрдп рдореЙрдбрд▓ рдХреЛ рдЗрд╕рдХреЗ рдбреЗрдЯрд╛ рд╕рдВрджрд░реНрдн рджреНрд╡рд╛рд░рд╛ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

WPF рдореЗрдВ, рдЖрдк рдПрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди-рд╕реНрддрд░реАрдп рджреГрд╢реНрдп рдореЙрдбрд▓ рдХреЗ рд╕рд╛рде рдПрдХ рдбреЗрдЯрд╛ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЛ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред рддрдм WPF рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЗрд╕ рдбреЗрдЯрд╛ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдкреНрд░рдХрд╛рд░ рдХреЗ рдкреНрд░рд╕реНрддреБрддрд┐ рдореЙрдбрд▓ рдХреЗ рдХрд┐рд╕реА рднреА рдСрдмреНрдЬреЗрдХреНрдЯ рдкрд░ рд▓рд╛рдЧреВ рдХрд░реЗрдЧрд╛ рдЬрдм рднреА рд╡реЗ UI рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрдВрдЧреЗред рдЗрд╕реЗ рдирд┐рд╣рд┐рдд рдбреЗрдЯрд╛ рдкреИрдЯрд░реНрди рдХреЗ рд░реВрдк рдореЗрдВ рдЬрд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕рд┐рд▓реНрд╡рд░рд▓рд╛рдЗрдЯ рдореЗрдВ, рдЖрдкрдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЙрд╕ рдирд┐рдпрдВрддреНрд░рдг рдореЙрдбрд▓ рдХреЗ рд▓рд┐рдП рдПрдХ рдбреЗрдЯрд╛ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрд┐рд╕реЗ рдирд┐рдпрдВрддреНрд░рдг рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдПрдХ рдбреЗрдЯрд╛ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдХреЛ рдЙрд╕ рдирд┐рдпрдВрддреНрд░рдг рдореЗрдВ рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдпрд╛ рдореВрд▓ рджреГрд╢реНрдп рдХреЗ рдмрд╛рд╣рд░ рд╕рдВрд╕рд╛рдзрди рд╢рдмреНрджрдХреЛрд╢ рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдкреНрд░рд╕реНрддреБрддрд┐ рд╕рдВрд╕рд╛рдзрди рд╢рдмреНрджрдХреЛрд╢ рдХреЗ рд╕рд╛рде рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рдПрдХ рд╡рд┐рдЪрд╛рд░ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдореБрдЦреНрдп рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рд╣реИрдВ:

рдореЙрдбрд▓ рдХреНрд▓рд╛рд╕ рджреЗрдЦреЗрдВ


рдПрдорд╡реАрд╡реАрдПрдо рдкреИрдЯрд░реНрди рдореЗрдВ рдкреНрд░рд╕реНрддреБрддрд┐ рдореЙрдбрд▓ рдкреНрд░рджрд░реНрд╢рди рддрд░реНрдХ рдФрд░ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рдХреЛ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХрд░рддрд╛ рд╣реИред рдкреНрд░рд╕реНрддреБрддрд┐ рдпрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдкреНрд░рдХрд╛рд░ рдпрд╛ рдкреНрд░рд╕реНрддреБрддрд┐ рдХреЗ рдЬреНрдЮрд╛рди рд╕реЗ рдЙрд╕рдХрд╛ рдХреЛрдИ рд╕реАрдзрд╛ рд╕рдВрдмрдВрдз рдирд╣реАрдВ рд╣реИред рджреГрд╢реНрдп рдореЙрдбрд▓ рдЙрди рдЧреБрдгреЛрдВ рдФрд░ рдЖрджреЗрд╢реЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рдирдХреЗ рд▓рд┐рдП рджреГрд╢реНрдп рдбреЗрдЯрд╛ рдХреЛ рдмрд╛рдБрдз рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдШрдЯрдирд╛рдУрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд┐рд╕реА рднреА рд░рд╛рдЬреНрдп рдХреЗ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рджреГрд╢реНрдп рдХреЛ рд╕реВрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИред рджреГрд╢реНрдп рдореЙрдбрд▓ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЧреБрдг рдФрд░ рдЖрджреЗрд╢ UI рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреА рд╣реИ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рдХреИрд╕реЗ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдкреНрд░рд╕реНрддреБрдд рдХреА рдЬрд╛рдПрдЧреАред

рджреГрд╢реНрдп рдореЙрдбрд▓ рдЖрд╡рд╢реНрдпрдХ рдореЙрдбрд▓ рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рд╕рд╛рде рджреГрд╢реНрдп рдХреА рдмрд╛рддрдЪреАрдд рдХреЗ рд╕рдордиреНрд╡рдп рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИред рдЕрдХреНрд╕рд░, рдПрдХ рдкреНрд░рд╕реНрддреБрддрд┐ рдореЙрдбрд▓ рдФрд░ рдореЙрдбрд▓ рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рдмреАрдЪ рдПрдХ-рд╕реЗ-рдХрдИ рд╕рдВрдмрдВрдз рд╣реЛрддреЗ рд╣реИрдВред рдПрдХ рджреГрд╢реНрдп рдореЙрдбрд▓ рд╕реАрдзреЗ рдореЙрдбрд▓ рдХрдХреНрд╖рд╛рдУрдВ рдХреЛ рд╡рд┐рдЪрд╛рд░реЛрдВ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдкрдиреНрди рдХрд░ рд╕рдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ рджреГрд╢реНрдп рдореЗрдВ рдирд┐рдпрдВрддреНрд░рдг рдбреЗрдЯрд╛ рдХреЛ рд╕реАрдзреЗ рдЙрдирдХреЗ рд╕рд╛рде рдмрд╛рдБрдз рд╕рдХреЗред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдореЙрдбрд▓ рд╡рд░реНрдЧреЛрдВ рдХреЛ рдбреЗрдЯрд╛ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдФрд░ рд╕рдВрдмрдВрдзрд┐рдд рдкрд░рд┐рд╡рд░реНрддрди рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдШрдЯрдирд╛рдУрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕ рдкрд░рд┐рджреГрд╢реНрдп рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП, рдЗрд╕ рд╡рд┐рд╖рдп рдореЗрдВ рдмрд╛рдж рдореЗрдВ рдбреЗрдЯрд╛ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдЕрдиреБрднрд╛рдЧ рджреЗрдЦреЗрдВред

рдПрдХ рджреГрд╢реНрдп рдореЙрдбрд▓ рдореЙрдбрд▓ рдбреЗрдЯрд╛ рдХреЛ рдмрджрд▓ рдпрд╛ рд╣реЗрд░рдлреЗрд░ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ рджреГрд╢реНрдп рдЖрд╕рд╛рдиреА рд╕реЗ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХреЗред рдХрд┐рд╕реА рджреГрд╢реНрдп рдореЙрдбрд▓ рдореЗрдВ рджреГрд╢реНрдп рдХреА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЕрддрд┐рд░рд┐рдХреНрдд рдЧреБрдг рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рдпреЗ рдЧреБрдг рдЖрдорддреМрд░ рдкрд░ рдореЙрдбрд▓ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреЗред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рджреГрд╢реНрдп рдореЙрдбрд▓ рдЕрдкрдиреЗ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рджреЛ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЗ рдореВрд▓реНрдп рдХреЛ рдЬреЛрдбрд╝ рд╕рдХрддрд╛ рд╣реИ, рдпрд╛ рдпрд╣ рд╕реАрдорд┐рдд рд╕реНрдЯреНрд░рд┐рдВрдЧ рд▓рдВрдмрд╛рдИ рд╡рд╛рд▓реЗ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╡реЗрд╢ рдХрд░рддреЗ рд╕рдордп рд╢реЗрд╖ рд╡рд░реНрдгреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреА рдЧрдгрдирд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдПрдХ рджреГрд╢реНрдп рдореЙрдбрд▓ рднреА рд╕реНрдерд┐рд░рддрд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рд╕рддреНрдпрд╛рдкрди рддрд░реНрдХ рдХреЛ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рдПрдХ рджреГрд╢реНрдп рдореЙрдбрд▓ рддрд╛рд░реНрдХрд┐рдХ рд░рд╛рдЬреНрдпреЛрдВ рдХреЛ рднреА рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдпреВрдЖрдИ рдореЗрдВ рджреГрд╢реНрдп рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рджреГрд╢реНрдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдПрдХ рджреГрд╢реНрдп рдорд╛рд░реНрдХрдЕрдк рдпрд╛ рд╢реИрд▓реА рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдПрдХ рджреГрд╢реНрдп рдореЙрдбрд▓ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рджреГрд╢реНрдп рдореЙрдбрд▓ рдореЗрдВ рдПрдХ рд╕реНрдерд┐рддрд┐ рд╣реЛ рд╕рдХрддреА рд╣реИ рдЬреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддреА рд╣реИ рдХрд┐ рдбреЗрдЯрд╛ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд░реВрдк рд╕реЗ рдПрдХ рд╡реЗрдм рд╕реЗрд╡рд╛ рдХреЛ рдкреНрд░реЗрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рджреГрд╢реНрдп рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдХреЗ рджреМрд░рд╛рди рджреГрд╢реНрдп рдПрдиреАрдореЗрд╢рди рджрд┐рдЦрд╛ рд╕рдХрддрд╛ рд╣реИред

рдЖрдорддреМрд░ рдкрд░, рдПрдХ рдкреНрд░рд╕реНрддреБрддрд┐ рдореЙрдбрд▓ рдЙрди рдХрдорд╛рдВрдб рдпрд╛ рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬрд┐рдиреНрд╣реЗрдВ рдпреВрдЖрдИ рдореЗрдВ рджрд░реНрд╢рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рдЖрд╣реНрд╡рд╛рди рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЙрджрд╛рд╣рд░рдг рддрдм рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдПрдХ рджреГрд╢реНрдп рдореЙрдбрд▓ рдПрдХ Submit рдХрдорд╛рдВрдб рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рд╡реЗрдм рд╕реЗрд╡рд╛ рдпрд╛ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рдбреЗрдЯрд╛ рдкрд╛рд╕ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рджреГрд╢реНрдп рдЗрд╕ рдЖрджреЗрд╢ рдХреЛ рдПрдХ рдмрдЯрди рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрд╕реЗ рдбреЗрдЯрд╛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрд▓рд┐рдХ рдХрд░ рд╕рдХреЗред рдЖрдорддреМрд░ рдкрд░, рдЬрдм рдХреЛрдИ рдХрдорд╛рдВрдб рдЕрдиреБрдкрд▓рдмреНрдз рд╣реЛ рдЬрд╛рддреА рд╣реИ, рддреЛ UI рдореЗрдВ рд╕рдВрдмрдВрдзрд┐рдд рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдЕрдХреНрд╖рдо рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдХрдорд╛рдВрдб рдЖрдкрдХреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдПрдирдХреИрдкреНрд╕реБрд▓реЗрдЯ рдХрд░рдиреЗ рдФрд░ рдЙрдирдХреА рджреГрд╢реНрдп рдкреНрд░рд╕реНрддреБрддрд┐ рд╕реЗ рдЕрд▓рдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВред

рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдкреНрд░рд╕реНрддреБрддрд┐ рдореЙрдбрд▓ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреНрд░рдореБрдЦ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рд╣реИрдВ:

рдиреЛрдЯред рдкреНрд░рд╕реНрддреБрддрд┐ рдпрд╛ рдкреНрд░рд╕реНрддреБрддрд┐ рдореЙрдбрд▓?
рдЕрдХреНрд╕рд░, рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдирд╛ рдХрд┐ рдирд┐рд╢реНрдЪрд┐рдд рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╣рд╛рдБ рд▓рд╛рдЧреВ рдХреА рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдП, рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИред рд╕рд╛рдорд╛рдиреНрдп рдирд┐рдпрдо рдХрд╣рддрд╛ рд╣реИ: рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рджреГрд╢реНрдп рдкреНрд░рджрд░реНрд╢рди рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдХреБрдЫ рднреА рдФрд░ рдЬрд┐рд╕реЗ рдмрд╛рдж рдореЗрдВ рдЕрдкрдЧреНрд░реЗрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рднрд▓реЗ рд╣реА рдЖрдк рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЗрд╕реЗ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдирд╣реАрдВ рдмрдирд╛ рд░рд╣реЗ рд╣реЛрдВ) рджреГрд╢реНрдп рдореЗрдВ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП; рдЕрдиреБрдкреНрд░рдпреЛрдЧ рддрд░реНрдХ рдХреЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рдХреБрдЫ рднреА рджреГрд╢реНрдп рдореЙрдбрд▓ рдореЗрдВ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЪреВрдВрдХрд┐ рджреГрд╢реНрдп рдореЙрдбрд▓ рдХреЛ рджреГрд╢реНрдп рдореЗрдВ рдХреБрдЫ рджреГрд╢реНрдп рддрддреНрд╡реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреЛрдИ рд╕реНрдкрд╖реНрдЯ рдЬреНрдЮрд╛рди рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдХреЛрдб, рджреГрд╢реНрдп рдХреЗ рднреАрддрд░ рджреГрд╢реНрдп рддрддреНрд╡реЛрдВ рдХреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдореЗрдЯрд┐рдХ рд░реВрдк рд╕реЗ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рджреГрд╢реНрдп рдХреЗ рдХреЛрдб-рдкреАрдЫреЗ рдпрд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рдХреВрдЯрдмрджреНрдз рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕реА рддрд░рд╣, рдбреЗрдЯрд╛ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдбреЗрдЯрд╛ рддрддреНрд╡реЛрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдпрд╛ рд╣реЗрд░рдлреЗрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдХреЛ рд╡реНрдпреВ рдореЙрдбрд▓ рдореЗрдВ рд░рд╣рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕реВрдЪреА рдмреЙрдХреНрд╕ рдореЗрдВ рдЪрдпрдирд┐рдд рдЖрдЗрдЯрдо рдХреЗ рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рд░рдВрдЧ рдХреЛ рджреГрд╢реНрдп рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдЪрдпрдирд┐рдд рдЖрдЗрдЯрдо рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдФрд░ рд▓рд┐рдВрдХ рдХреА рд╕реВрдЪреА рдХреЛ рдкреНрд░рд╕реНрддреБрддрд┐ рдореЙрдбрд▓ рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдореЙрдбрд▓ рд╡рд░реНрдЧ


рдПрдорд╡реАрд╡реАрдПрдо рдкреИрдЯрд░реНрди рдореЗрдВ рдореЙрдбрд▓ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рддрд░реНрдХ рдФрд░ рдбреЗрдЯрд╛ рдХреЛ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХрд░рддрд╛ рд╣реИред рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рддрд░реНрдХ рдХреЛ рдХрд┐рд╕реА рднреА рдЕрдиреБрдкреНрд░рдпреЛрдЧ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдбреЗрдЯрд╛ рдХреА рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрддрд┐ рдФрд░ рдкреНрд░рдмрдВрдзрди рдХреА рдЪрд┐рдВрддрд╛ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рдирд┐рдпрдо рдбреЗрдЯрд╛ рд╕реНрдерд┐рд░рддрд╛ рдФрд░ рд╡реИрдзрддрд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрддреБрд╖реНрдЯ рд╣реИрдВред рдкреБрди: рдкреНрд░рдпреЛрдЬреНрдп рдХреЛ рдЕрдзрд┐рдХрддрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореЙрдбрд▓ рдореЗрдВ рдкреНрд░рд╕реНрддреБрддрд┐-рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЬрд╛рдирдХрд╛рд░реА, рддрд░реНрдХ рдпрд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдПрдХ рдирд┐рдпрдо рдХреЗ рд░реВрдк рдореЗрдВ, рдореЙрдбрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдХреНрд▓рд╛рдЗрдВрдЯ рднрд╛рдЧ рдХреЗ рд╡рд┐рд╖рдп рдХреНрд╖реЗрддреНрд░ рдХреЗ рд╕рд╛рд░ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдореЗрдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдбреЗрдЯрд╛ рдореЙрдбрд▓ рдФрд░ рдХрд┐рд╕реА рднреА рд╡реНрдпрд╡рд╕рд╛рдп рдФрд░ рд╕рддреНрдпрд╛рдкрди рддрд░реНрдХ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдПрдВ рд╣реЛ рд╕рдХрддреА рд╣реИрдВред рдореЙрдбрд▓ рдореЗрдВ рдбреЗрдЯрд╛ рдФрд░ рдХреИрд╢ рддрдХ рдкрд╣реБрдВрдЪ рднреА рд╣реЛ рд╕рдХрддреА рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдЖрдорддреМрд░ рдкрд░ рдПрдХ рдЕрд▓рдЧ рдбреЗрдЯрд╛ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА, рдпрд╛ рд╕рдВрдмрдВрдзрд┐рдд рд╕реЗрд╡рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЕрдХреНрд╕рд░, рдореЙрдбрд▓ рдФрд░ рдбреЗрдЯрд╛ рдПрдХреНрд╕реЗрд╕ рд▓реЗрдпрд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ ADO.NET рдПрдВрдЯрд┐рдЯреА рдлреНрд░реЗрдорд╡рд░реНрдХ, WCF рдбреЗрдЯрд╛ рд╕рд░реНрд╡рд┐рд╕реЗрдЬ рдпрд╛ WCF RIA рд╕рд░реНрд╡рд┐рд╕реЗрдЬ рдЗрдиреНрдлреНрд░рд╛рд╕реНрдЯреНрд░рдХреНрдЪрд░ рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИред

рдЖрдорддреМрд░ рдкрд░, рдПрдХ рдореЙрдбрд▓ рдЙрдкрдХрд░рдг рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдПрдХ рджреГрд╢реНрдп рдХреЛ рдмрд╛рдВрдзрдирд╛ рдЖрд╕рд╛рди рдмрдирд╛рддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдЖрдорддреМрд░ рдкрд░ рдЕрд░реНрде рд╣реИ рдХрд┐ рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рдпрд╛ рд╕рдВрдЧреНрд░рд╣реЛрдВ рдореЗрдВ рдмрджрд▓рд╛рд╡ рдХреА рд╕реВрдЪрдирд╛рдУрдВ рдХрд╛ рд╕рдорд░реНрдерди INotifyCollectionChanged рдФрд░ INotifyCollectionChanged рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд┐рдпрд╛ INotifyCollectionChanged ред рдореЙрдбрд▓ рд╡рд░реНрдЧ рдЬреЛ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд╕реЗрдЯ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВ, рд╡реЗ рдЖрдорддреМрд░ рдкрд░ INotifyCollectionChanged ObservableCollection<T> рд╡рд░реНрдЧ рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддреЗ рд╣реИрдВ, рдЬреЛ рдХрд┐ INotifyCollectionChanged рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдореЙрдбрд▓ IDataErrorInfo (рдпрд╛ INotifyDataErrorInfo ) рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдбреЗрдЯрд╛ рд╕рддреНрдпрд╛рдкрди рдФрд░ рддреНрд░реБрдЯрд┐ рд░рд┐рдкреЛрд░реНрдЯрд┐рдВрдЧ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдпреЗ рдЗрдВрдЯрд░рдлреЗрд╕ рдЖрдкрдХреЛ рдмрд╛рдзреНрдп рдбреЗрдЯрд╛ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЛ UI рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП WPF рдФрд░ рд╕рд┐рд▓реНрд╡рд░рд▓рд╛рдЗрдЯ рд╕реВрдЪрдирд╛рдПрдВ рднреЗрдЬрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рд╡реЗ рдпреВрдЖрдИ рд╕реНрддрд░ рдкрд░ рдбреЗрдЯрд╛ рд╕рддреНрдпрд╛рдкрди рд╕рдорд░реНрдерди рдФрд░ рддреНрд░реБрдЯрд┐ рд░рд┐рдкреЛрд░реНрдЯрд┐рдВрдЧ рднреА рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВред
рдЯрд┐рдкреНрдкрдгреА
, ?
рдХрднреА-рдХрднреА рдЖрдкрдХреЛ рдЙрди рдореЙрдбрд▓ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА рдЬреЛ рдЗрдВрдЯрд░рдлреЗрд╕ INotifyCollectionChanged , IDataErrorInfo , 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:

рдЕрддрд┐рд░рд┐рдХреНрдд рдЬрд╛рдирдХрд╛рд░реА


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.aspx

MEF, ┬лManaged Extensibility Framework Overview┬╗ MSDN: http://msdn.microsoft.com/en-us/library/dd460648.aspx

Unity, ┬лUnity Application Block┬╗ MSDN: http://www.msdn.com/unity

DelegateCommand CompositeCommand , 9, " Communicating Between Loosely Coupled Components ."

Source: https://habr.com/ru/post/In176867/


All Articles