Caliburn.Micro рдврд╛рдВрдЪреЗ (рднрд╛рдЧ 1) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╣рд▓реНрдХреЗ WP7 рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╡рд┐рдХрд╛рд╕



рдЖрдкрдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИ!

рдЬреИрд╕рд╛ рдХрд┐ рдирд╛рдо рд╕реЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ, рдЗрд╕ рд▓реЗрдЦ рдХреЛ Caliburn.Micro рдврд╛рдВрдЪреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рдмреБрджреНрдз рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдореИрдВ рдпрд╣ рджрд┐рдЦрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ рдХрд┐ WP7 рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдХреЗ рд▓рд┐рдП рдбреЗрд╡рд▓рдкрд░ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдврд╛рдВрдЪреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЙрдкрдпреЛрдЧреА рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдпрд╣ рдХрд┐рд╕ рдХрд╛рд░реНрдп рдХреЛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рдХреЗ рдлрд╛рдпрджреЗ рдФрд░ рдиреБрдХрд╕рд╛рдиред

рд▓реЗрдХрд┐рди рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╕рд╡рд╛рд▓ рдЬреЛ рдореИрдВ рдкреВрд░реЗ рд▓реЗрдЦ рдореЗрдВ рдЬрд╡рд╛рдм рджреЗрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛, рдореБрдЭреЗ WP7 рдХреЗ рдПрдХ рдХрд╛рдлреА рд╡реНрдпрд╡рд╕реНрдерд┐рдд рд░рд╛рдЬреНрдп рдореЗрдВ, рдХрд┐рд╕реА рддрд░рд╣ рдХреЗ рдврд╛рдВрдЪреЗ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдФрд░ рдордзреНрдпрд╡рд░реНрддреА рдкрд░рдд рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИред

рдпрджрд┐ рдЖрдк рдЗрд╕ рд╡рд┐рд╖рдп рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ, рддреЛ рдмрд┐рд▓реНрд▓реА рдореЗрдВ рдЖрдкрдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИред

рдЯреНрд░реЗрдирд┐рдВрдЧ


рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рд▓реЗрдЦ рдХреА рд╕рд╛рдордЧреНрд░реА рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА WP7 рд╡рд┐рдХрд╛рд╕ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдмреНрдпрд╛рдЬ рдХреА рд╣реЛрдЧреАред рдЗрд╕рд▓рд┐рдП, рдореИрдВ рд╡реАрдПрд╕ рдЖрджрд┐ рдореЗрдВ рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛, рд▓реЗрдХрд┐рди рдореИрдВ рдпрд╣ рдорд╛рдиреВрдВрдЧрд╛ рдХрд┐ рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдпрд╣ рдЬрд╛рдирддреЗ рд╣реИрдВ рдпрд╛ рдХрдИ рдЕрдиреНрдп рдЦреБрд▓реЗ рд╕реНрд░реЛрддреЛрдВ рд╕реЗ рд╕реАрдЦ рд╕рдХрддреЗ рд╣реИрдВред

рд╕реНрд╡рддрдВрддреНрд░ рдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА:
  1. рд╡реАрдПрд╕ 2010 SP1
  2. рд╡рд┐рдВрдбреЛрдЬ рдлреЛрди рдПрд╕рдбреАрдХреЗ 7.1
  3. Caliburn.Micro

рдПрдХ рд╡рд┐рдВрдбреЛрдЬ рдлреЛрди рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдПрдВ рдЬрд┐рд╕реЗ рд╣рдо рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред

рдПрдХ рднрд╡рд┐рд╖реНрдпрд╡рдХреНрддрд╛ рдХреЗ рдмрдЬрд╛рдп рдПрдорд╡реАрд╡реАрдПрдо рдпрд╛ рдЕрдзреНрдпрд╛рдп


WP7 рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рд╕реНрдХреНрд░реАрди / рдкреЗрдЬ (рд╡рд┐рдВрдбреЛрдЬ рдлреЛрди рдкреЗрдЬ) рдХрд╛ рдПрдХ рд╕реЗрдЯ рд╣реЛрддрд╛ рд╣реИ, рдпреЗ рд╕реНрдХреНрд░реАрди рдХреБрдЫ рдбреЗрдЯрд╛ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдбреАрдмреА рдореЗрдВ рд░рд┐рдХреЙрд░реНрдбред рд╕рд╡рд╛рд▓ рдпрд╣ рд╣реИ рдХрд┐ рдЗрд╕ рдбреЗрдЯрд╛ рдФрд░ UI рддрддреНрд╡реЛрдВ рдХреЛ рд╕реНрдХреНрд░реАрди рдкрд░ рдХреИрд╕реЗ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдПред

рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рд╣рдо AD рд╕рдореВрд╣ рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреА рдПрдХ рд╕реВрдЪреА рджрд┐рдЦрд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рд╕реНрдХреНрд░реАрди рдХрд╛ рд╢реАрд░реНрд╖рдХ рд╕рдореВрд╣ рдХрд╛ рдирд╛рдо рд╣реЛрдЧрд╛, рдФрд░ рд╢рд░реАрд░ рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреА рд╕реВрдЪреА рдХреЗ рд╕рд╛рде рдПрдХ рд▓рд┐рд╕реНрдЯрдмреЙрдХреНрд╕ рд╣реЛрдЧрд╛ред рдпрд╣ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ? рдПрдХ рд╕рд░рд▓ рд▓реЗрдХрд┐рди рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдкреГрд╖реНрда рдХреЗ рд╢рд░реАрд░ рдореЗрдВ рдХреБрдЫ ala рд╕рд╣реА рд▓рд┐рдЦреЗрдВ (* .xaml.cs)
// PageTitle - TextBlock PageTitle.Text = GroupConnector(GroupId).Name; // Users - ListBox Users.ItemsSource = GroupConnector(GroupId).Users; 

рдпрд╣ рдХрд╛рдо рдХрд░реЗрдЧрд╛, рд▓реЗрдХрд┐рди рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рдХрдИ рдиреБрдХрд╕рд╛рди рд╣реИрдВ, рдЙрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рд╣реИрдВ:
  1. рдбрд┐рдЬрд╛рдЗрди рдФрд░ рдмрдирд╛рдП рд░рдЦрдиреЗ рдореЗрдВ рдореБрд╢реНрдХрд┐рд▓ред рдХреЛрдб рдФрд░ UI рддрддреНрд╡ рдирд┐рдХрдЯрддрд╛ рд╕реЗ рдЬреБрдбрд╝реЗ рд╣реБрдП рд╣реИрдВ, рдФрд░ рдпрд╣ рд╡рд┐рдХрд╛рд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдЬрдЯрд┐рд▓ рдмрдирд╛рддрд╛ рд╣реИ UI рдФрд░ рдЙрд╕рдХреЗ рд╕реЗрд╡рд╛рд░рдд рдХреЛрдб рдХреЛ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЗрд╕ рддрд░рд╣ рдХреЗ рдХреЛрдб рдХреЛ рдмрд╛рд╣рд░реА рд▓реЛрдЧреЛрдВ рджреНрд╡рд╛рд░рд╛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ, рдЦрд╛рд╕рдХрд░ рдЕрдЧрд░ рдЗрд╕рдореЗрдВ рдХрдИ рддрддреНрд╡ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ, рдФрд░ рджреЛ рдирд╣реАрдВ, рдЬреИрд╕рд╛ рдХрд┐ рд╣рдорд╛рд░реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВред
  2. рдмреБрд░реА рддрд░рд╣ рд╕реЗ рд╕рдорд╛рдирд╛рдВрддрд░ред рдпрд╛рдиреА рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдпрд╣ рдЬрд╛рдирдХрд░ рдХрд┐ рд╡рд╣ рдХрд┐рд╕ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ, рдПрдХ рддреИрдпрд╛рд░ рдпреВрдЖрдИ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдмрд┐рдирд╛ рдЕрдкрдиреЗ рдХреЛрдб рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреА рдЬрд╛рдВрдЪ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдпрджрд┐ рдпреВрдЖрдИ рдФрд░ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдХреЛрдб рдмрдирд╛рдиреЗ рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рд▓реЛрдЧ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ, рддреЛ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдФрд░ рдмрдврд╝ рдЬрд╛рддреА рд╣реИред
  3. рдЗрдХрд╛рдИ рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦрдирд╛ рдХрдард┐рди рд╣реИред рдпреВрдЖрдИ рддрддреНрд╡реЛрдВ рд╕реЗ рдмрдВрдзрд╛ рдХреЛрдб рдпреВрдирд┐рдЯ рдЯреЗрд╕реНрдЯ рдХреЗ рд▓рд┐рдП рдХрдард┐рди рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ xaml рдФрд░ рдкреВрд░реЗ рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЬреЛ рдХрд┐ рддреЗрдЬ рдирд╣реАрдВ рд╣реИ, рд╕рдорд╕реНрдпрд╛рдЧреНрд░рд╕реНрдд рд╣реИ рдпрджрд┐ рдпреВрдирд┐рдЯ рдкрд░реАрдХреНрд╖рдг рдХрд┐рд╕реА рдЕрдиреНрдп рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рд╣реИрдВ рдпрд╛ рдпреВрдЖрдИ рдЕрднреА рддреИрдпрд╛рд░ рдирд╣реАрдВ рд╣реИ (TDD рдЕрдиреБрдпрд╛рдпрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╣реИрд▓реЛ)ред

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

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

WP7 рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рддреЗ рд╕рдордп, MVVM рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣рд░ рдЬрдЧрд╣ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдХреБрдЫ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдирд┐рд░реНрдгрдп рд▓реЗрддреЗ рд╣реИрдВ , рдЕрдиреНрдп рддреИрдпрд╛рд░ рдХрд┐рдП рдЧрдП рд╡рд┐рдХрд╛рд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдПрдХ рд░реВрдкрд░реЗрдЦрд╛ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкреНрд░рд┐рдЬреНрдо рдФрд░ рдПрдорд╡реАрд╡реАрдПрдо рд▓рд╛рдЗрдЯ рдЯреВрд▓рдХрд┐рдЯ ) рдХреЗ рд░реВрдк рдореЗрдВ рдХрд░рддреЗ рд╣реИрдВред Caliburn.Micro рд╕рд┐рд░реНрдл рдПрдХ рдРрд╕реА рд░реВрдкрд░реЗрдЦрд╛ рд╣реИред рдпрд╛рдиреА рдпрд╣ рдЕрдЪреНрдЫрд╛ рдмрдиреНрд╕ рдХреЗ рдПрдХ рд╕реЗрдЯ рдХреЗ рд╕рд╛рде MVVM рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИред

рд╢реБрд░реБрдЖрдд рд╣реЛ рд░рд╣реА рд╣реИ


рдареАрдХ рд╣реИ, рд╣рдордиреЗ рдПрдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдпрд╛, рдЪрд▓реЛ рдЖрд╡рд╢реНрдпрдХ рд╕реАрдПрдо рдореЗрдВ рдкреНрд▓рдЧ рдХрд░реЗрдВ (рдЗрд╕рдХреЗ рдмрд╛рдж рдореИрдВ рдЗрд╕ рд╢реЙрд░реНрдЯрдХрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реВрдВрдЧрд╛, рддрд╛рдХрд┐ рд╣рд░ рдмрд╛рд░ Caliburn.Micro рдирд╣реАрдВ рд▓рд┐рдЦреВрдВ) рд▓рд╛рдЗрдмреНрд░реЗрд░реАред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП:
  1. рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рдЕрдВрджрд░ рдлрд╝реЛрд▓реНрдбрд░ CaliburnMicro (рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдирд╛рдо рдХреЗ рд╕рд╛рде) рдмрдирд╛рдПрдБ рдФрд░ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдХреЙрдкреА рдХрд░реЗрдВ Caliburn.Micro.dll , Caliburn.Micro.Extensions.dll рдФрд░ System.Windows.Interactivity.dll рд╕реЗ CM рд╡рд┐рддрд░рдг (рдмрд┐рди \ WP71 \ рд░рд┐рд▓реАрдЬрд╝)ред
  2. рд╕рдВрджрд░реНрдн рдореЗрдВ рдирдИ рдлрд╛рдЗрд▓реЗрдВ рдЬреЛрдбрд╝реЗрдВред

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

рдЖрдЗрдП, рдирдореВрдирд╛рдмреВрдЯрд╕реНрдЯреНрд░реИрдкрд░ рдХреНрд▓рд╛рд╕, рдлреЛрдирдмреБрдЯрд╕реНрдЯреНрд░реИрдкрд░ рд╡рдВрд╢рдЬ рдмрдирд╛рдПрдВ рдФрд░ рдЗрд╕реЗ рд╣рдорд╛рд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ:
 public class SampleBootstrapper : PhoneBootstrapper { private PhoneContainer _container; protected override void Configure() { _container = new PhoneContainer(RootFrame); _container.RegisterPhoneServices(); AddCustomConventions(); } private static void AddCustomConventions(){} protected override object GetInstance(Type service, string key) { return _container.GetInstance(service, key); } protected override IEnumerable<object> GetAllInstances(Type service) { return _container.GetAllInstances(service); } protected override void BuildUp(object instance) { _container.BuildUp(instance); } } 

рдЗрд╕ рд╡рд░реНрдЧ рдХреЛ рдЖрдкрдХреЛ рднреНрд░рдорд┐рдд рди рдХрд░рдиреЗ рджреЗрдВ; рдмрд╛рдж рдореЗрдВ рдЗрд╕рд╕реЗ рд╣рдореЗрдВ рдХреЗрд╡рд▓ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рд╡рд┐рдзрд┐ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред

рдЕрдм рдЖрдкрдХреЛ рдЙрд╕ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдмрддрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдЖрдкрдХреЛ рдирдореВрдирд╛рдмреВрдЯрд╕реНрдЯреНрд░реИрдкрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд╣рдорд╛рд░реЗ рдмреВрдЯрд╕реНрдЯреНрд░реИрдкрд░ рдХреЗ рд▓рд┐рдВрдХ рдХреЛ рдЫреЛрдбрд╝рдХрд░ рд╡рд╣рд╛рдВ рд╕реЗ рд╕рдм рдХреБрдЫ рд╣рдЯрд╛рддреЗ рд╣реБрдП App.xaml рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛:
 <Application x:Class="CaliburnMicroSamples.App" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:CaliburnMicroSamples="clr-namespace:CaliburnMicroSamples"> <Application.Resources> <CaliburnMicroSamples:SampleBootstrapper x:Key="bootstrapper" /> </Application.Resources> </Application> 

рдХреНрдпреЛрдВрдХрд┐ рдЗрд╡реЗрдВрдЯ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдЬреИрд╕реЗ рд▓реЙрдиреНрдЪрд┐рдВрдЧ , рдПрдХреНрдЯрд┐рдиреЗрдЯреЗрдб , рдЖрджрд┐ рдЕрдм рдирдореВрдирд╛рдмреБрдЯрд╕реНрдЯреНрд░реИрдкрд░ рдкрд░ рд▓реЗ рдЬрд╛рддреЗ рд╣реИрдВ , рдлрд┐рд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рдкреБрд░рд╛рдиреЗ рддрд░реАрдХреЛрдВ рдХреЛ App.xaml.cs. рд╕реЗ рд╣рдЯрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╛рдиреА App рд╡рд░реНрдЧ рдЕрдм рдмрд╣реБрдд рд╕рд░рд▓ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛:
 public partial class App { public App() { InitializeComponent(); } } 

рд╣рдо рд╕рдВрдХрд▓рди рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЪрд▓рд╛рддреЗ рд╣реИрдВ, рдЕрдЧрд░ рд╕рдм рдХреБрдЫ рдкрд╣рд▓реЗ рдЬреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рддред рд╕реАрдПрдо рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рд╕реЗ рдкрд╣рд▓реЗ, рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЖрдкрдиреЗ рд╕рдм рдХреБрдЫ рд╕рд╣реА рдХрд┐рдпрд╛ рд╣реИ рдФрд░ рдЖрдк рдЖрдЧреЗ рдмрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ, рдпрджрд┐ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреНрд░реИрд╢ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдПрдХ рдЧрд▓рддреА рд╣реБрдИ рдереА рдФрд░ рдЖрдкрдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рдЬрд╛рд░реА рд░рдЦрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдкрд╣рд▓рд╛ рджреГрд╢реНрдпрдореЙрдбрд▓


рдерд░реНрдб-рдкрд╛рд░реНрдЯреА рдлреНрд░реЗрдорд╡рд░реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдмрд┐рдирд╛ рдФрд░ ViewModel рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдмрд┐рдирд╛, рдпрд╣ ViewModel рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред ViewModel рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдПрдХ рд╡рд░реНрдЧ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдлрд┐рд░ рдЗрд╕рдХрд╛ рд▓рд┐рдВрдХ PhoneApplicationPage рдкреЗрдЬ ala рдХреЗ рдЕрдВрджрд░ DataContext рдХреЛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
 DataContext = ViewModelsConstructor.GetViewModel(this); 

рдПрдХ рд╣реА рдмрд╛рдд xaml рдХреЗ рд╕рд╛рде рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИред рдпрд╣ рд╕рдм рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП ViewModel рдФрд░ View рддрддреНрд╡реЛрдВ (UI рдирд┐рдпрдВрддреНрд░рдг) рдХреЗ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИред

рд╕реАрдПрдо рдореЗрдВ, рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдереЛрдбрд╝рд╛ рдЕрд▓рдЧ рд╣реИред рд╕рдВрджрд░реНрдн рдХреЛ рд╕реНрд╡рдпрдВ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдпрд╣ рд░реВрдкрд░реЗрдЦрд╛ рдкрд░ рд▓реЗ рдЬрд╛рддрд╛ рд╣реИред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ DataContext рдФрд░ * .xaml.cs рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдЬреЛ рдЖрдкрдХреЛ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╡реНрдпреВ рдФрд░ xaml рд╕реЗ рдЖрдЧреЗ рдмрдврд╝рддреЗ рд╣реБрдП рдЖрджрд░реНрд╢ MVVM рдХреЗ рдХрд░реАрдм рдкрд╣реБрдВрдЪрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рд╕реАрдПрдо VM (ViewModel) рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдШреЛрд╖рдгрд╛рддреНрдордХ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдореИрдВ рдмрд╛рдж рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реВрдВрдЧрд╛ред

рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕реНрдХреНрд░реАрди рд╣реИ: рдореЗрдирдкреЗрдЬ ред рдЖрдЗрдП рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд░реНрдЧ рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рд╕реАрдПрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ ViewModel рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, xaml рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рд╕рд╛рде рдлрд╝рд╛рдЗрд▓ рдХреЗ рдирд╛рдо рдХреЗ рд╕рдорд╛рди рдирд╛рдо рдХреЗ рд╕рд╛рде рдПрдХ рд╡рд░реНрдЧ рдмрдирд╛рдПрдВ, ViewModel (рдпрд╛рдиреА MainPageViewModel рд╡рд░реНрдЧ) рдХреЗ рдЕрдВрдд рдХреЗ рд╕рд╛рде, рдЗрд╕реЗ рдПрдХ рд╣реА рдирд╛рдо рдХреЗ рд╕рд╛рде рдПрдХ рдЕрд▓рдЧ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд░рдЦреЗрдВ рдФрд░ рд╕реНрдХреНрд░реАрди рд╡рд░реНрдЧ CM рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рд╛ (рд╕рднреА рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЗрд╕ рд╡рд░реНрдЧ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рд╡рд░реНрддрдорд╛рди рдкреГрд╖реНрда рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ, рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдж рдореЗрдВ рд▓рд┐рдЦреВрдВрдЧрд╛)ред рдпрд╛рдиреА рд╡рд░реНрдЧ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП:
 public class MainPageViewModel : Screen { public MainPageViewModel() { } } 

рдЕрдВрддрд┐рдо рдЪреАрдЬрд╝ рдЬреЛ рд╣рдорд╛рд░реЗ VM рдХреЛ Bootstrapper'e рдореЗрдВ рдкрдВрдЬреАрдХреГрдд рдХрд░рдирд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдирдореВрдирд╛ рд╡рд┐рдзрд┐ рдореЗрдВ, рдирдореВрдирд╛ рд╡рд┐рдзрд┐ рдореЗрдВ, рдмрд╕ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдЬреЛрдбрд╝реЗрдВ:
 _container.PerRequest<MainPageViewModel>(); 

рдФрд░ рд╡рд╣ рд╕рдм рд╣реИ! рд╣рдорд╛рд░рд╛ ViewModel рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдмрдирд╛рдП рдЬрд╛рдиреЗ рдкрд░ CM рджреНрд╡рд╛рд░рд╛ MainPage рдкреЗрдЬ рд╕реЗ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдПрдЧрд╛ред PerRequest рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ MainPageViewModel рдХреНрд▓рд╛рд╕ рдХреЛ рд╣рд░ рдмрд╛рд░ MainPage рдкреЗрдЬ рдмрдирд╛рдиреЗ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдпрджрд┐ рдЖрдк рд╕рд┐рдВрдЧрд▓рдЯрди рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ MainPageViewModel рд╡рд░реНрдЧ рдмрд╛рдж рдХреЗ рд╕рднреА рдЕрдиреБрд░реЛрдзреЛрдВ рдкрд░ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧрд╛ред

рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдмрд╛рдзреНрдпрдХрд╛рд░реА рдЧреБрдг рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдорд╛рд░реЗ VM рд╡рд░реНрдЧ рдореЗрдВ PageTitle рдЧреБрдг рдЬреЛрдбрд╝реЗрдВ рдФрд░ рдЗрд╕реЗ рдХреБрдЫ рдорд╛рди рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, "рдирдореВрдирд╛ рдкреГрд╖реНрда":
 public class MainPageViewModel : Screen { public string PageTitle { get; set; } public MainPageViewModel() { PageTitle = "sample app"; } } 

рдФрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЪрд▓рд╛рдПрдБред рдкреГрд╖реНрда рдХрд╛ рд╢реАрд░реНрд╖рдХ рдмрджрд▓ рдЧрдпрд╛ рд╣реИ! рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реБрдЖ рдХреНрдпреЛрдВрдХрд┐ рд╕реАрдПрдо рдиреЗ ViewModel рдФрд░ View рдХреЗ рдмреАрдЪ рдХреЗ рд╕рдВрдмрдВрдз рдХреЗ рд╕рднреА рд╕рд╡рд╛рд▓реЛрдВ рдХреЛ рдЕрдкрдиреЗ рдКрдкрд░ рд▓реЗ рд▓рд┐рдпрд╛ рдФрд░ PageTitle рд╕рдВрдкрддреНрддрд┐ рдХреЛ рдЙрд╕рдХреЗ рдирд╛рдо рд╕реЗ рдЬреЛрдбрд╝ рджрд┐рдпрд╛ (xaml рдореЗрдВ рдЗрд╕реЗ рднреА рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ)ред

Text="{Binding PageTitle, Mode=TwoWay}" рдбрд╛рдпрд░реЗрдХреНрдЯ рд▓рд┐рдВрдХ рдирд┐рд░реНрджреЗрд╢реЛрдВ (ala Text="{Binding PageTitle, Mode=TwoWay}" ) рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рдмрдВрдзрди рднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ Text="{Binding PageTitle, Mode=TwoWay}" рд╕реНрд╡реАрдХрд╛рд░ Text="{Binding PageTitle, Mode=TwoWay}" рд╣реЛрдЧрд╛ рдХрд┐ рдЗрд╕рдХреЗ рдмрд┐рдирд╛ рдпрд╣ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИред

рдпрд╣ рдПрдХ рдХрд╛рдлреА рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг рдерд╛, рдореИрдВ рдмрд╛рдж рдореЗрдВ рдЗрд╕ рд╕рдВрдмрдВрдз рдореЗрдВ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдмрд╛рдзреНрдпрдХрд╛рд░реА рд╡рд┐рдХрд▓реНрдкреЛрдВ рдФрд░ рд╕реАрдПрдо рдХреНрд╖рдорддрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реВрдВрдЧрд╛, рд▓реЗрдХрд┐рди рдЕрдм рд╣рдо рдЗрд╕реЗ рдЬрд╛рд░реА рд░рдЦреЗрдВрдЧреЗред

рдиреЗрд╡рд┐рдЧреЗрд╢рди


рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдФрд░ AD рд╕реЗ рдПрдХ рд╕рдореВрд╣ рдХреЗ рд╕рд╛рде рд╣рдорд╛рд░реЗ рдЙрджрд╛рд╣рд░рдг рдХреЛ рдпрд╛рдж рд░рдЦреЗрдВ? рдпрд╣ рдорд╛рди рд▓реЗрдирд╛ рддрд░реНрдХрд╕рдВрдЧрдд рд╣реИ рдХрд┐ рдХрд┐рд╕реА рд╕рдореВрд╣ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рджрд┐рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд╕рдореВрд╣ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдХрд╣реАрдВ рди рдХрд╣реАрдВ рдкреНрд░реЗрд╖рд┐рдд рдХрд░рдиреА рд╣реЛрдЧреАред рд╕рд╛рджрдЧреА рдХреЗ рд▓рд┐рдП, рдпрд╣ рдЙрд╕рдХрд╛ рдирд╛рдо рд╣реИред рдпрд╣ рд╡реАрдПрдо рдХрд╛ "рдХрд╣реАрдВ рди рдХрд╣реАрдВ" рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЙрд╕реЗ рдпрд╣ рдЬрд╛рдирдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдХрд┐ рджреГрд╢реНрдп рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рдбреЗрдЯрд╛ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рд╕рдореВрд╣ рдХреНрдпрд╛ рд╣реИред

рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХрд╛ рдорд╛рдирдХ рддрд░реАрдХрд╛ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕рд╛рде рдиреЗрд╡рд┐рдЧреЗрд╢рди рд╣реИред рдпрд╛рдиреА рд╣рдо рдХрд╣рддреЗ рд╣реИрдВ рдХрд┐ рд╣рдо рдРрд╕реА рд╕реНрдХреНрд░реАрди рдкрд░ рдЬрд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ (рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреА рд╕реВрдЪреА рдХреЗ рд╕рд╛рде), рдФрд░ рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рд╣рдо рд╕рдореВрд╣ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЛ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рдЖрдорддреМрд░ рдкрд░ рдЗрд╕ рддрд░рд╣ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
 NavigationService.Navigate(new Uri("/GroupPage.xaml?name=Administrators", UriKind.Relative)); 

рдФрд░ рдлрд┐рд░ GroupPage.xaml рдкреЗрдЬ рдХреЗ OnNavigatedTo рдореЗрдВ , рдпрд╣ рдкреИрд░рд╛рдореАрдЯрд░ рдирд┐рд░реНрдорд╛рдг рджреНрд╡рд╛рд░рд╛ рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
 var name = NavigationContext.QueryString["name"]; 

рдлрд┐рд░ рдореЙрдбрд▓ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╡рд░реНрдЧ рдХреЗ рд▓рд┐рдП (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ) рдЗрд╕реЗ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдлрд┐рд░ рдЗрд╕реЗ DataContext рдХреЛ рдкрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рд╕рд╣рдордд рд╣реВрдВ, рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рд╕рд░рд▓ рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рд╕реБрдВрджрд░ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реИред

рдПрдХ рдЕрдиреНрдп рд▓реЛрдХрдкреНрд░рд┐рдп рддрд░реАрдХрд╛ PhoneApplicationService.Current.State рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рд╛рдЭрд╛ рдХрд┐рдП рдЧрдП рдбреЗрдЯрд╛ рдХрд╛ рдЖрджрд╛рди-рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рд╣реИ:
 PhoneApplicationService.Current.State["name"] = "Administrators"; 

рдпрд╛ рдмрд╕ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╡рд░реНрдЧ рдХреЗ рдЕрдВрджрд░ рд╡реИрд╢реНрд╡рд┐рдХ рдЪрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ, рдЗрд╕рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рд▓рд╛рдн Application.Current рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд╣реАрдВ рднреА рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдпрд╣ рд╕рдм рдХрд╛рдлреА рдЯреЗрдврд╝рд╛ рд╣реИред рдЕрдВрддрд┐рдо рджреЛ рдЙрджрд╛рд╣рд░рдг рдЦрд░рд╛рдм рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╕реНрдХреНрд░реАрди рдХреЗ рдмреАрдЪ рдбреЗрдЯрд╛ рд╕рд╛рдЭрд╛рдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рд╛рд╕реНрдпрд╛рд╕реНрдкрдж рд╣реИ, рдЦрд╛рд╕рдХрд░ рдЬрдм рдРрд╕рд╛ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдорд╛рдирдХ рддрд░реАрдХрд╛ рд╣реИред рдкрд╣рд▓рд╛ рдЙрджрд╛рд╣рд░рдг рдЦрд░рд╛рдм рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд░рд╛рд╕реНрддреЗ рдореЗрдВ рдПрдХ рдЯрд╛рдЗрдкреЛ рдмрдирд╛рдирд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИ, рдФрд░ рдиреЗрд╡рд┐рдЧреЗрд╢рдирд╕реНрдХреЙрдирдЯреЗрдХреНрд╕реНрдЯ рд╕реЗ рдХрд╣реАрдВ рднреА рдЗрд╕ рдореВрд▓реНрдп рдХреЛ рдмрд╛рд╣рд░ рдЦреАрдВрдЪрдиреЗ рдХреЗ рд╕рд╛рде "рднреВрд╕реА" (рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЕрдЧрд░ рдЙрдирдореЗрдВ рд╕реЗ рдмрд╣реБрдд рд╕рд╛рд░реЗ рд╣реИрдВ), рддреЛ рдХрд╣реАрдВ рди рдХрд╣реАрдВ рдмрд╛рдж рдХреЗ рд╣рд╕реНрддрд╛рдВрддрд░рдг рдХреЗ рд╕рд╛рде рдмрд╣реБрдд рдЦреБрд╢ рд╣реИрдВред

рдФрд░ рдпрд╣рд╛рдБ рдпрд╣ рдХреИрд╕реЗ рдХрд░рдирд╛ рд╣реИ:
 _navigationService.UriFor<GroupPageViewModel>() .WithParam(x => x.Name, "Administrators") .Navigate(); 

GroupPageViewModel - VM, рд╕рд╛рджреГрд╢реНрдп рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдИ рдЧрдИ, рдЬреИрд╕рд╛ рдХрд┐ рд╣рдордиреЗ MainPageViewModel, рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╕рдВрдкрддреНрддрд┐ рдХреЗ рдирд╛рдо рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдерд╛:
 public class GroupPageViewModel : Screen { public string Name { get; set; } } 

рдФрд░ _navigationService рдПрдХ рдРрд╕реА рд╡рд╕реНрддреБ рд╣реИ рдЬреЛ INavigationService рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреА рд╣реИ , рдЬрд┐рд╕реЗ рд╕реНрдХреНрд░реАрди рд╡рд░реНрдЧ рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдХрд┐рд╕реА рднреА рд╡реАрдПрдо рдХреЗ рдЕрдВрджрд░ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рд╕реНрдХреНрд░реАрди рдХреЗ рдмреАрдЪ рдиреЗрд╡рд┐рдЧреЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред WithParam рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ , рдЖрдк рдЧрдВрддрд╡реНрдп рдкреГрд╖реНрда рдкрд░ VM рдЧреБрдг рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред INavigationService рдорд╛рдирдХ рдиреЗрд╡реАрдЧреЗрд╢рди рд╕реЗрд╡рд╛ рдкрд░ рдПрдХ рдЖрд╡рд░рдг рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдЗрд╕рдХреА рд╕рднреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд╢рд╛рдорд┐рд▓ рд╣реИ рдФрд░ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдлреИрд▓реА рд╣реБрдИ рд╣реИред

рдпрд╣ рд╣реИ рдХрд┐ MainPageViewModel рд╡рд░реНрдЧ рдХреЗ рд▓рд┐рдП рдПрдХ INavigationService рдЙрджрд╛рд╣рд░рдг рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдХреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ, CM рдХреЗрд╡рд▓ MainPageViewModel рдирд┐рд░реНрдорд╛рддрд╛ рдХреЗ рд▓рд┐рдП INavigationService рдСрдмреНрдЬреЗрдХреНрдЯ рдкрд╛рд╕ рдХрд░рддрд╛ рд╣реИ:
 public class MainPageViewModel : Screen { private INavigationService _navigationService; public string PageTitle { get; set; } public MainPageViewModel(INavigationService navigationService) { PageTitle = "sample app"; _navigationService = navigationService; } } 

рд▓рд╛рдн рд╕реНрдкрд╖реНрдЯ рд╣реИрдВ:
  1. рдмрд╣реБрдд рдХрдо рдХреЛрдб рд╣реИ рдЬреЛ рдПрдХ рдбреЗрд╡рд▓рдкрд░ рдХреЛ рд╡реАрдПрдо рдХреЛ рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдкрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рд┐рдЦрдирд╛ рдкрдбрд╝рддрд╛ рд╣реИред
  2. рдХреНрдпреЛрдВрдХрд┐ InavigationService рдЧрдВрддрд╡реНрдп VM рд╡рд░реНрдЧ рджреНрд╡рд╛рд░рд╛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╣реИ рдФрд░ рдЗрд╕ рд╡рд░реНрдЧ рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рдкреИрд░рд╛рдореАрдЯрд░ рд╕реЗрдЯ рд╣реИрдВ, рдЗрди рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рд╕реЗрдЯ рдХрд░рддреЗ рд╕рдордп рдЧрд▓рддреА / рд╕реАрд▓ рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдРрд╕рд╛ рдХреЛрдб рдХреЗрд╡рд▓ рд╕рдВрдХрд▓рди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
  3. рдХреНрдпреЛрдВрдХрд┐ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдкреНрд░реЗрд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, INavigationService рдХрд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдЧреАрд▓рд╛ рд╣реИ, рдЬреЛ рдЗрдХрд╛рдИ-рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦрддреЗ рд╕рдордп рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИред
  4. рдпреВрдЖрдИ рд╕реЗ рдХреЛрдб рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрдиреИрддрд┐рдХ рд╣реИред

рд╡рд┐рдкрдХреНрд╖:
  1. рдЬрдЯрд┐рд▓ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдкрд╛рд░рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣рд╛рдВ рдХреЛрдИ рдЬрд╛рджреВ рдирд╣реАрдВ рд╣реИ, рд╕реАрдПрдо WP7 рдореЗрдВ рдРрд╕рд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдЕрдкрдиреА рдХреНрд╖рдорддрд╛рдУрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ред рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдиреЗрд╡реАрдЧреЗрд╢рди рд╕рд░реНрд╡рд┐рд╕ (рдкрд╣рд▓реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдПрдХ) рдХреЗ рдорд╛рдирдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИред рд▓реЗрдХрд┐рди рдЗрд╕реЗ рджрд░рдХрд┐рдирд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдпрджрд┐ рдЖрдк рдХреНрд░рдорд╛рдВрдХрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд╕реАрдПрдо рд╕реНрд░реЛрддреЛрдВ рдХреЛ рдереЛрдбрд╝рд╛ рдореЛрдбрд╝ рджреЗрддреЗ рд╣реИрдВред

INotifyPropertyChanged


рд╣рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ AD рд╕реЗ рдЫреЛрдбрд╝ рджреЗрдВрдЧреЗ, рдФрд░ рд╣рдо рдПрдХ рдФрд░ рдЙрджрд╛рд╣рд░рдг рдкреЗрд╢ рдХрд░реЗрдВрдЧреЗред рдорд╛рди рд▓реАрдЬрд┐рдП рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдореЗрд▓ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╣реИ, рдЬрд┐рд╕рдХреЗ рдПрдХ рдкреЗрдЬ рдкрд░ рдмрд┐рдирд╛ рдкрдврд╝реЗ рд╕рдВрджреЗрд╢реЛрдВ рдХреЗ рдмреИрдЬ рдХреЗ рд╕рд╛рде рдЙрдкрд▓рдмреНрдз рдореЗрд▓рдмреЙрдХреНрд╕реЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рд╣реИред

рдкрд┐рдЫрд▓реЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рд╕реЗ рдореБрдЦреНрдп рдЕрдВрддрд░ рдпрд╣ рд╣реИ рдХрд┐ рдбреЗрдЯрд╛ рдЕрдм рд╕реНрдерд┐рд░ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рдордп рдХреЗ рд╕рд╛рде рдмрджрд▓ рд╕рдХрддрд╛ рд╣реИ (рдЕрдкрдард┐рдд рд╕рдВрджреЗрд╢реЛрдВ рдХрд╛ рдХрд╛рдЙрдВрдЯрд░)ред рдпрд╛рдиреА рдпрджрд┐ рд╣рдо рдХрд▓реНрдкрдирд╛ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдЕрдкрдард┐рдд рд╕рдВрджреЗрд╢реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рд╕рдВрдкрддреНрддрд┐ рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИ, рддреЛ рд╣рдореЗрдВ рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рддрдВрддреНрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рджреЗрдЦреЗрдВред рдЗрд╕ рдкреНрд░рдпреЛрдЬрди рдХреЗ рд▓рд┐рдП, рдПрдХ рд╕реВрдЪрдирд╛ рддрдВрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ INotifyPropertyChanged рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдорд╛рдирдХ рддрд░реАрдХрд╛ рд╣реЛрдЧрд╛:
 public class MailboxPageViewModel : INotifyPropertyChanged { private int _unreadCount; public int UnreadCount { get { return _unreadCount; } set { _unreadCount = value; NotifyPropertyChanged("UnreadCount"); } } public event PropertyChangedEventHandler PropertyChanged; public void NotifyPropertyChanged(string propertyName) { if (PropertyChanged != null) PropertyChanged(this, new PropertyChangedEventArgs(propertyName)); } } 

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрдм UnreadCount рдкреНрд░реЙрдкрд░реНрдЯреА рдореЗрдВ рдмрджрд▓рд╛рд╡ рд╣реЛрддрд╛ рд╣реИ , рддреЛ рдкреНрд░реЙрдкрд░реНрдЯреАрдЪреИрдиреНрдб рдХреЛ рдпрд╣рд╛рдБ рд╕рд┐рдЧреНрдирд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ , рдЬрд┐рд╕рд╕реЗ рдЗрд╕рдХреЗ рдореВрд▓реНрдп рдХреЗ рд╡реНрдпреВ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрдврд╝рдирд╛ рд╣реЛрдЧрд╛ред

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

рдкрд╣рд▓рд╛ рдПрдХреНрд╕рдкреНрд░реЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рджреВрд╕рд░рд╛ рдбрд┐рд╕реНрдкреНрд░реИрдЪрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╡рд░реНрддрдорд╛рди рдереНрд░реЗрдб рдореЗрдВ рдСрдкрд░реЗрд╢рди рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдХреЗред рдЪреЗрдХрдЕрд╕реЗрдХ () рдФрд░ рдпрджрд┐ рдСрдкрд░реЗрд╢рди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рддреЛ рдЗрд╕реЗ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░реЗрдВ, рд▓реЗрдХрд┐рди рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдпреВрдЖрдИ рдереНрд░реЗрдб рдореЗрдВред рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рдореЗрд░реА рдмрд╛рдЗрдХ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╕реАрдПрдо рдиреЗ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрд╛ред рдпрд╣рд╛рдБ рдКрдкрд░ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдб рд╣реИ:
 public class MailboxPageViewModel : Screen { private int _unreadCount; public int UnreadCount { get { return _unreadCount; } set { _unreadCount = value; NotifyOfPropertyChange(() => UnreadCount); } } } 

CM рд╡рд┐рдзрд┐ NotifyOfPropertyChange рд╡рд░реНрдгрд┐рдд рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИ рдФрд░ рддреБрд░рдВрдд "рдмреЙрдХреНрд╕ рд╕реЗ рдмрд╛рд╣рд░" рдЙрдкрд▓рдмреНрдз рд╣реИред

CM рдореЗрдВ, рдЖрдк BindableCollection рд╡рд░реНрдЧ рдХреЛ рднреА рдЦреЛрдЬ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдХрд┐рд╕реА рдЕрдиреНрдп рд╡рд░реНрдЧ рдХреЗ рдЧреИрд░- UI рдереНрд░реЗрдб рд╕реЗ рдкрд╣реБрдВрдЪ рдХреЗ рд╕рд╛рде рд╕рдорд╛рди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИ рдЬреЛ INotifyPropertyChanged рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рд╕рдВрдЧреНрд░рд╣ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИ, Observatololionion рд╡рд░реНрдЧред рдпрд╛рдиреА BindableCollection рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рдЖрдкрдХреЛ рдпрд╣ рдЪрд┐рдВрддрд╛ рдХрд░рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╕рдВрдЧреНрд░рд╣ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдХрд┐рд╕ рд╕реНрдЯреНрд░реАрдо рдореЗрдВ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рд╕рдорд╛рдзрд┐ рдХрд╛ рдкрддреНрдерд░


WP7 рдХреЗ рд▓рд┐рдП рдЖрд╡реЗрджрди рд▓рд┐рдЦрддреЗ рд╕рдордп рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рдкрд╛рд╕ рдЬреЛ рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реИрдВ, рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ рд╕рдорд╛рдзрд┐ рдХреА рд╕реНрдерд┐рддрд┐ рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рдХреЗ рдмрд╛рдж рдЖрд╡реЗрджрди рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ред

WP7 рдореЗрдВ, PhoneApplicationService.State , IsolatedStorage, рдФрд░ рдЕрдиреНрдп рд╕рдорд╛рдзрд╛рди рдЗрд╕рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдЕрддрд┐рд░рд┐рдХреНрдд рдЖрд╡рд░рдг рдХреЗ рдмрд┐рдирд╛ рдЬреЛ рдХрд╛рдо рдХрд░рдирд╛ рд╣реИ, рд╡рд╣ рдЗрддрдирд╛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдирд╣реАрдВ рд╣реИред рд╕реАрдПрдо рдиреЗ рджрд┐рдпрд╛ рд╕реБрд░реБрдЪрд┐рдкреВрд░реНрдг рд╕рдорд╛рдзрд╛рди рдпрджрд┐ рдЖрдк рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рд╡реАрдПрдо рдбреЗрдЯрд╛ рдХрдмреНрд░ рд╕реЗ рдмрдЪ рдЬрд╛рдП, рддреЛ рдмрд╕ рд╡реАрдПрдо рдФрд░ рдПрдВрдбрд┐рдВрдЧ рд╕реНрдЯреЛрд░реЗрдЬ рдирд╛рдо рд╕реЗ рдПрдХ рдХреНрд▓рд╛рд╕ рдмрдирд╛рдПрдВред рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреА рд╕реВрдЪреА рдХреЗ рд╕рд╛рде рд╣рдорд╛рд░реЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рд╕рдореВрд╣ рдХреЛ GroupPageViewModelStorage рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:
 public class GroupPageViewModelStorage : StorageHandler<GroupPageViewModel> { public override void Configure() { Property(x => x.Name) .InPhoneState() .RestoreAfterActivation(); } } 

StorageHandler рдПрдХ CM рд╡рд░реНрдЧ рд╣реИ рдЬреЛ рдПрдХ VM рдХреЗ рдЕрдВрджрд░ рдбреЗрдЯрд╛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд░рдгрдиреАрддрд┐ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╣рдо рдХрд╣рддреЗ рд╣реИрдВ рдХрд┐ рд╣рдо PhoneApplicationService.State рдХреЗ рдЕрдВрджрд░ рдирд╛рдо рдХреА рд╕рдВрдкрддреНрддрд┐ рдмрдЪрд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдФрд░ рдкреГрд╖реНрда рдХреА рд╕рдХреНрд░рд┐рдпрддрд╛ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдбреЗрдЯрд╛ рдХреЛ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

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

рдкрд╣рд▓реЗ рднрд╛рдЧ рдХрд╛ рдЕрдВрдд


рдпрд╣рд╛рдБ рдореБрдЭреЗ рдорд╣рд╕реВрд╕ рд╣реБрдЖ рдХрд┐ рд▓реЗрдЦ рдореБрдЭреЗ рд╢реБрд░реБрдЖрдд рдореЗрдВ рдЕрдкреЗрдХреНрд╖рд╛ рд╕реЗ рдЕрдзрд┐рдХ рдорд┐рд▓ рд░рд╣рд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдФрд░ рдЕрдзрд┐рдХ рд▓рд┐рдЦрдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдпрд╣ рдПрдХ рдкрд░рд┐рдЪрдпрд╛рддреНрдордХ рд╕рдореАрдХреНрд╖рд╛ рд▓реЗрдЦ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╕реЗ рдЕрдзрд┐рдХ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЗрд╕реЗ рджреЛ рднрд╛рдЧреЛрдВ рдореЗрдВ рддреЛрдбрд╝рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред

рдЬрд╛рд░реА рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП ...

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


All Articles