рд╡рд┐рдВрдбреЛрдЬ 8 (WinRT) рдореЗрдВ рд▓рд╛рдЗрд╡ рдЯрд╛рдЗрд▓реНрд╕

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

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

рдпрд╣ рд▓реЗрдЦ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдмрд┐рдВрджреБрдУрдВ рдХреЛ рдХрд╡рд░ рдХрд░реЗрдЧрд╛ред

1. рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЯрд╛рдЗрд▓реЗрдВред
2. рд▓рд╛рдЗрд╡ рдЯрд╛рдЗрд▓реЗрдВ
2.1ред рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕
2.2ред рдЯрд╛рдЗрд▓реНрд╕ рд▓рдЧрд╛рдиреЗ рдХреЗ рддрд░реАрдХреЗ
2.3ред рд▓рд╛рдЗрд╡ рдЯрд╛рдЗрд▓реНрд╕ред рдкреВрд░реНрдг рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдиред
2.4ред рдЯрд╛рдЗрд▓реНрд╕ рдореЗрдВ рдЫрд╡рд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рд▓рд┐рдВрдХред
3. рдПрдХ рдЬреАрд╡рд┐рдд рдЯрд╛рдЗрд▓ рдХреЗ рдЬреАрд╡рди рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рдирд╛ред
3.1ред рдПрдХ рдЯрд╛рдЗрд▓ рдХреЛ рдирд┐рд╖реНрдХреНрд░рд┐рдп рдХрд░рдирд╛
3.2ред рдПрдХ рдЯрд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП рд╕рдордп рд╕реАрдорд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдирд╛ред
3.3ред рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдЯрд╛рдЗрд▓ рдкреНрд░рджрд░реНрд╢рди рд╕реЗрдЯрд┐рдВрдЧред
3.4ред рдЕрдиреБрд╕реВрдЪрд┐рдд рдЯрд╛рдЗрд▓ рд╕реВрдЪреА рдкреНрд░рдмрдВрдзрди (рд╕реВрдЪреА рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрддрд┐, рд╡рд┐рд▓реЛрдкрди)
4. рдЯрд╛рдЗрд▓реНрд╕ рдХреА рдХрддрд╛рд░ред
5. рдЯрд╛рдЗрд▓реНрд╕ рдореЗрдВ рдШрдЯрдирд╛рдУрдВ (рдмреИрдЬ) рдХрд╛ рд╕реВрдЪрдХ
6. рдЯрд╛рдЗрд▓реЛрдВ рдХрд╛ рдЖрд╡рдзрд┐рдХ рдЕрджреНрдпрддрди (рджреВрд░рд╕реНрде рд╕рдВрд╕рд╛рдзрдиреЛрдВ рд╕реЗ)
7. рдорд╛рдзреНрдпрдорд┐рдХ рдЯрд╛рдЗрд▓реЗрдВ
7.1ред рджреНрд╡рд┐рддреАрдпрдХ рдЯрд╛рдЗрд▓ рд╕реБрд░рдХреНрд╖рд┐рдд рдХрд░рдирд╛
7.2ред рдПрдХ рдорд╛рдзреНрдпрдорд┐рдХ рдЯрд╛рдЗрд▓ рд╕реЗ рдПрдХ рдЖрд╡реЗрджрди рдХреЛ рд╕рдХреНрд░рд┐рдп рдХрд░рдирд╛
7.3ред рдЯрд┐рдХреА рд╣реБрдИ рдЯрд╛рдЗрд▓ рдХреЛ рд╣рдЯрд╛рдирд╛
7.4ред рджреНрд╡рд┐рддреАрдпрдХ рдЯрд╛рдЗрд▓ рдХрд╛ рдкреБрдирд░реЛрджреНрдзрд╛рд░
8. рдкреГрд╖реНрдарднреВрдорд┐ рдХрд╛рд░реНрдп рдФрд░ рдкреБрд╢ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд▓рд╛рдЗрд╡ рдЯрд╛рдЗрд▓ рдкреНрд░рдмрдВрдзрди

1. рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЯрд╛рдЗрд▓реЗрдВред


Win8 рдореЗрдВ, рдЖрдк рджреЛ рдореБрдЦреНрдп рдЖрдХрд╛рд░реЛрдВ рдХреЗ рдЯрд╛рдЗрд▓ рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ - рд╡рд░реНрдЧ 150x150 (рд╡рд░реНрдЧ) рдФрд░ рдЪреМрдбрд╝рд╛ 310x150 (рдЪреМрдбрд╝рд╛)ред

Package.appxmanifest рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдкреНрд░рдХрдЯрди рдореЗрдВ, рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдХреЗрд╡рд▓ рд╡рд░реНрдЧ рдЯрд╛рдЗрд▓ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХреА рдЬрд╛рддреА рд╣реИред рдПрдХ рд╡рд┐рд╕реНрддреГрдд рдЯрд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП, рдмрд╕ 310x150 рдЖрдХрд╛рд░ рдХреА рддрд╕реНрд╡реАрд░ рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рд┐рдВрдХ рдЬреЛрдбрд╝реЗрдВред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЖрдЗрдХрди рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдиреВ рдореЗрдВ, рдкреНрд░рджрд░реНрд╢рди рдореЛрдб - рд╡рд░реНрдЧ рдпрд╛ рдЪреМрдбрд╝рд╛ рд╕реНрд╡рд┐рдЪ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ

рдЫрд╡рд┐

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


рдмреИрдХрдЧреНрд░рд╛рдЙрдВрдб рдХрд▓рд░ рдореЗрдВ рдмреИрдХрдЧреНрд░рд╛рдЙрдВрдб рдХрд▓рд░, рдкреНрд░реЙрдкрд░реНрдЯреА рдореЗрдВ рдЙрд╕реА рдкреЗрдЬ рдкрд░ рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЧрд╣рд░реЗ рд╣рд░реЗ рд░рдВрдЧ рдХреЗ рд▓рд┐рдП, рдЖрдк рдорд╛рди # 005500 рдкрд░ рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░рдВрдЧ рдЧреНрд░реЗ # 464646 рд╣реИ, рдЬрд┐рд╕реЗ рдмрд╛рдж рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

2.Live рдЯрд╛рдЗрд▓реНрд╕


2.1ред рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕

рд╡рд┐рдВрдбреЛрдЬ 8 рдореЗрдВ рд▓рд╛рдЗрд╡ рдЯрд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рд╣реИ, рд╡рд┐рдВрдбреЛрдЬ рдлреЛрди рдореЗрдВ рд▓рд╛рдЗрд╡ рдЯрд╛рдЗрд▓ рдХреЗ рд╕рдорд╛рдиред рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рд╡рд╛рд▓реА рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд╕рд╛рде рдЯрд╛рдЗрд▓ рдХреЛ "рдкреБрдирд░реНрдЬреАрд╡рд┐рдд" рдХрд░рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХреЗ рдХрд╛рд░рдг "рд▓рд╛рдЗрд╡ рдЯрд╛рдЗрд▓реНрд╕" рдХреЛ рдЙрдирдХрд╛ рдирд╛рдо рдорд┐рд▓рд╛ред

WinRT рдПрдкреАрдЖрдИ рдЯрд╛рдЗрд▓реНрд╕ рдХреЗ рд▓рд┐рдП 46 рдЯреЗрдореНрдкрд▓реЗрдЯ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХрд╛ рд╡рд┐рд╕реНрддреГрдд рд╡рд┐рд╡рд░рдг MSDN рдкреГрд╖реНрда рдкрд░ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдЪреМрдХреЛрд░ рдЯрд╛рдЗрд▓реНрд╕ рдХреЗ рд▓рд┐рдП резреж рдФрд░ рдЪреМрдбрд╝реЗ рдХреЗ рд▓рд┐рдП рейрем рдЯреЗрдореНрдкреНрд▓реЗрдЯ рд╣реИрдВ, рдЕрдЧрд░ рдЖрдк рдПрдкреНрд▓реАрдХреЗрд╢рди рдореЗрдВ рдЪреМрдбрд╝реА рдЯрд╛рдИрд▓реНрд╕ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдирд╣реАрдВ рдмрдирд╛рддреЗ рд╣реИрдВ, рддреЛ резреж рдХреЗ рд▓рд┐рдП рдЪреМрдХреЛрд░ рдЯрд╛рдЗрд▓реНрд╕ рдкрд░реНрдпрд╛рдкреНрдд рд╣реИрдВ ...

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЖрдк рд╕рднреА рдЯрд╛рдЗрд▓реЛрдВ рдХреЛ рдкрд╛рда рдХреЗ рд╕рд╛рде рдЧреНрд░рд╛рдлрд┐рдХ рдФрд░ рдЧреНрд░рд╛рдлрд┐рдХ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╕рднреА рд╡рд░реНрдЧ рдбрдмрд▓-рдкрдХреНрд╖реАрдп рдЯрд╛рдЗрд▓реЗрдВ рдПрдХ рдПрдирд┐рдореЗрдЯреЗрдб рдЯрд╛рдЗрд▓ рд╣реИрдВ рдЬреЛ рд╕рдордп-рд╕рдордп рдкрд░ рдЫрд╡рд┐ рдХреЛ рдкрд╛рда рдореЗрдВ рдмрджрд▓рддреА рд╣реИрдВред

рд╡рд░реНрдЧ рдЯрд╛рдЗрд▓ рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕
рдЯреЗрдХреНрд╕реНрдЯрдЧреНрд░рд╛рдлрд┐рдХрдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рдФрд░ рдкрд╛рда (рджреЛ рддрд░рдлрд╛)
TileSquareBlock,
TileSquareText01,
TileSquareText02,
TileSquareText03,
TileSquareText04,
TileSquareImageTileSquarePeekImageAndText01
TileSquarePeekImageAndText02
TileSquarePeekImageAndText03
TileSquarePeekImageAndText04

рд╡рд┐рд╕реНрддреГрдд рдЯрд╛рдЗрд▓реЛрдВ рдХрд╛ рдЪрдпрди рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╣реИред
рдЗрд╕реА рд╕рдордп, "рд╢реБрджреНрдз" рд░реВрдк рдореЗрдВ рдХреЗрд╡рд▓ рджреЛ рдЧреНрд░рд╛рдлрд┐рдХ рд╣реИрдВ, рдФрд░ рдПрдХ рдЯрд╛рдЗрд▓ рдкрд░ рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рдФрд░ рдкрд╛рда рдХреЗ рд╕рд╛рде рдПрдХ рддрд░рдлрд╛ рдЯрд╛рдЗрд▓реЗрдВ рднреА рд╣реИрдВред

рд╡рд╛рдЗрдб рдЯрд╛рдЗрд▓ рдЯреЗрдореНрдкреНрд▓реЗрдЯ
рдЯреЗрдХреНрд╕реНрдЯрдЧреНрд░рд╛рдлрд┐рдХрдкрд╛рда рдФрд░ рдЧреНрд░рд╛рдлрд┐рдХ
TileWideBlockAndText01
TileWideBlockAndText02
TileWideText01
TileWideText02
TileWideText03
TileWideText04
TileWideText05
TileWideText06
TileWideText07
TileWideText08
TileWideText09
TileWideText10
TileWideText11
TileWideImage
TileWideImageCollection
рдПрдХрд▓ рдкрдХреНрд╖реАрдп
TileWideImageAndText01
TileWideImageAndText02
TileWideSmallImageAndText01
TileWideSmallImageAndText02
TileWideSmallImageAndText03
TileWideSmallImageAndText04
TileWideSmallImageAndText05

рджреНрд╡рд┐рдкрдХреНрд╖реАрдп (рдПрдирд┐рдореЗрдЯреЗрдб рд╕рдВрдХреНрд░рдордг)
TileWidePeekImageCollection01
TileWidePeekImageCollection02
TileWidePeekImageCollection03
TileWidePeekImageCollection04
TileWidePeekImageCollection05
TileWidePeekImageCollection06
TileWidePeekImageAndText01
TileWidePeekImageAndText02
TileWidePeekImage01
TileWidePeekImage02
TileWidePeekImage03
TileWidePeekImage04
TileWidePeekImage05
TileWidePeekImage06

2.2ред рдЯрд╛рдЗрд▓реНрд╕ рд▓рдЧрд╛рдиреЗ рдХреЗ рддрд░реАрдХреЗ

рд▓рд╛рдЗрд╡ рдЯрд╛рдЗрд▓реНрд╕ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдЬреЛрдбрд╝рдирд╛ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИред MSDN рдореЗрдВ рд▓рд┐рдВрдХ рдХреЗ рддрд╣рдд , рдЖрдк xml рдЯреЗрдореНрдкрд▓реЗрдЯ рдХрд╛ рд╡рд┐рд╡рд░рдг рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред

Xml рд╡рд┐рд╡рд░рдг рдХреЗ рд╕рд╛рде рдЯрд╛рдЗрд▓рд╕рдХреНрд▓реЗрдпрд░рдмреНрд▓реЙрдХ рд╡рд░реНрдЧ рдЯрд╛рдЗрд▓ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:

<tile> <visual> <binding template="TileSquareBlock"> <text id="1">Text Field 1</text> <text id="2">Text Field 2</text> </binding> </visual> </tile> 


рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЯреЗрдореНрдкрд▓реЗрдЯ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реИред рддрддреНрд╡ рдореЗрдВ рдЯреИрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЙрди рдореВрд▓реНрдпреЛрдВ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд┐рдирдХреА рд╣рдореЗрдВ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред
рдкрд╣рд▓реЗ рдХреНрд╖реЗрддреНрд░ рдХреЗ рд▓рд┐рдП 25 рдХрд╛ рдорд╛рди рдФрд░ рджреВрд╕рд░реЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЧреНрд░реА рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВ:

 <tile> <visual> <binding template="TileSquareBlock"> <text id="1">25</text> <text id="2">degrees</text> </binding> </visual> </tile> 

рдПрдХ рдмрд╛рд░ рдЬрдм рдЖрдк рдЯреЗрдореНрдкрд▓реЗрдЯ рдкрд░ рдлреИрд╕рд▓рд╛ рдХрд░ рд▓реЗрддреЗ рд╣реИрдВ, рддреЛ рдХреЛрдб рд▓рд┐рдЦрдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред
рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЯрд╛рдЗрд▓ рд▓рдЧрд╛рдиреЗ рдХреЗ рддреАрди рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕рдорд╛рди рддрд░реАрдХреЗ рд╣реИрдВ:

2.2.1ред "рдореИрдиреБрдЕрд▓" рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди

рдЗрд╕ рдкрджреНрдзрддрд┐ рдХрд╛ рд╕рд╛рд░ рдпрд╣ рд╣реИ рдХрд┐ рд╣рдо рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдЖрд╡рд╢реНрдпрдХ Xml рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдЙрддреНрдкрдиреНрди рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдПрдХ рдЯрд╛рдЗрд▓ рдмрдирд╛рддреЗ рд╣реИрдВ:
 var xml = @"<tile> <visual> <binding template=""TileSquareBlock""> <text id=""1"">25</text> <text id=""2"">Degrees</text> </binding> </visual> </tile>"; var xmlDocument = new XmlDocument(); xmlDocument.LoadXml(xml); var notification=new TileNotification(xmlDocument); TileUpdateManager.CreateTileUpdaterForApplication().Update(notification); 


2.2.2ред рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдЯреЗрдореНрдкрд▓реЗрдЯ рджреНрд╡рд╛рд░рд╛

WinRT рдХреЗ рдкрд╛рд╕ рддреИрдпрд╛рд░ рдХрд┐рдП рдЧрдП рдЯреЗрдореНрдкрд▓реЗрдЯ рд╣реИрдВред WinRT API "TileUpdateManager.GetTemplateContent" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╣рдо рдХрд┐рд╕реА рднреА рдЯреЗрдореНрдкрд▓реЗрдЯ XmlDocument рдХреЛ рд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ XmlDocument API рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдорд╛рди рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВред

 var xmlDocument = TileUpdateManager.GetTemplateContent(TileTemplateType.TileSquareBlock); var nodes = xmlDocument.GetElementsByTagName("binding").First().ChildNodes; nodes[0].InnerText = "25"; nodes[1].InnerText = "Degrees"; var notification = new TileNotification(xmlDocument); TileUpdateManager.CreateTileUpdaterForApplication().Update(notification); 


рд╢рд╛рдпрдж рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдордп рд▓реЗрдиреЗ рд╡рд╛рд▓рд╛ рд╡рд┐рдХрд▓реНрдкред рдпрд╣ рди рдХреЗрд╡рд▓ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреА рд╕рдВрд░рдЪрдирд╛ рдХреЛ рдпрд╛рдж рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдмрд▓реНрдХрд┐ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рдХреЛрдб рднреА рд▓рд┐рдЦреЗрдВред

2.2.3ред NotificationsExtensions Library рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛

рдЯрд╛рдЗрд▓реНрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХреЛ рдЖрд╕рд╛рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдП рдЧрдП NotificationsExtension рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рд╕рд╛рде рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдЙрджрд╛рд╣рд░рдг рдЖрддреЗ рд╣реИрдВред рд▓рд╛рдЗрдмреНрд░реЗрд░реА WinRT API рдкрд░ рдПрдХ рдЖрд╡рд░рдг рд╣реИ рдФрд░ рдЖрд╡рд╢реНрдпрдХ xml рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдПрдХрддреНрд░ рдХрд░рддрд╛ рд╣реИред рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдЗрд╕ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╣рдорд╛рд░рд╛ рдЯрд╛рдЗрд▓ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреИрд╕реЗ рджрд┐рдЦреЗрдЧрд╛ред

 ITileSquareBlock tileContent = TileContentFactory.CreateTileSquareBlock(); tileContent.TextBlock.Text = "25"; tileContent.TextSubBlock.Text = "Degrees"; TileUpdateManager.CreateTileUpdaterForApplication().Update(tileContent.CreateNotification()); 


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

рдЫрд╡рд┐

"рд╡рд┐рд╕реНрддреГрдд" рдЯрд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХреЛрдИ рдмрджрд▓рд╛рд╡ рдирд╣реАрдВ рд╣реЛрдЧрд╛, рд╣рдо рдЖрдЧреЗ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗ рдХрд┐ рдЯрд╛рдЗрд▓ рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдПред

2.3ред рд▓рд╛рдЗрд╡ рдЯрд╛рдЗрд▓реНрд╕ред рдкреВрд░реНрдг рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдиред

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

 <tile> <visual> <binding template="TileSquareBlock"> <text id="1">25</text> <text id="2">degrees</text> </binding> </visual> </tile> 


рдФрд░ рд╡рд┐рд╕реНрддреГрдд рдЯрд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП рдЯреЗрдореНрдкрд▓реЗрдЯ:

 <tile> <visual> <binding template="TileWideText03"> <text id="1">25 degrees</text> </binding> </visual> </tile> 


рдлрд┐рд░ рд╕рдВрдпреБрдХреНрдд рд╕рдВрд╕реНрдХрд░рдг рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:

 <tile> <visual> <binding template="TileSquareBlock"> <text id="1">25</text> <text id="2">degrees</text> </binding> <binding template="TileWideText03"> <text id="1">25 degrees</text> </binding> </visual> </tile> 


рдПрдХ рдЫреЛрдЯреА рд╕рд╣рд╛рдпрдХ рд╡рд┐рдзрд┐ рдЬреЛрдбрд╝реЗрдВ, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣рдо рдмрд╛рдж рдореЗрдВ рд▓реЗрдЦ рдореЗрдВ рдХреЛрдб рдХреА рдорд╛рддреНрд░рд╛ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░реЗрдВрдЧреЗ:

 private TileNotification CreateNotification(string xml) { var xmlDocument = new XmlDocument(); xmlDocument.LoadXml(xml); return new TileNotification(xmlDocument); } 


рдЕрдм рдЪреМрдбрд╝реА рдФрд░ рдЪреМрдХреЛрд░ рдЯрд╛рдЗрд▓реНрд╕ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:

 var tile = CreateNotification(@"<tile> <visual> <binding template=""TileSquareBlock""> <text id=""1"">25</text> <text id=""2"">Degrees</text> </binding> <binding template=""TileWideText03""> <text id=""1"">25 degrees in Moscow</text> </binding> </visual> </tile>"); TileUpdateManager.CreateTileUpdaterForApplication().Update(tile); 


рдЪреВрдВрдХрд┐ рдЕрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЪреМрдбрд╝реА рдФрд░ рдЪреМрдХреЛрд░ рдЯрд╛рдЗрд▓реНрд╕ рдХреЗ рд▓рд┐рдП рд╕рд╛рдордЧреНрд░реА рд╣реИ, рдЬрдм рд╣рдо "рд╡рд╛рдЗрдб" рдЯрд╛рдЗрд▓ рдореЛрдб рдореЗрдВ рд╕реНрд╡рд┐рдЪ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрд╛рда рджреЗрдЦреЗрдВрдЧреЗ:

рдЫрд╡рд┐

NotificationExtensions рдкреБрд╕реНрддрдХрд╛рд▓рдп рднреА рдПрдХ рд╡рд┐рд╕реНрддреГрдд рдФрд░ рд╡рд░реНрдЧ рдЯрд╛рдЗрд▓ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рд╕рдорд╛рди рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:

 ITileSquareBlock squareTile = TileContentFactory.CreateTileSquareBlock(); squareTile.TextBlock.Text = "25"; squareTile.TextSubBlock.Text = "Degrees"; ITileWideText03 wideTile = TileContentFactory.CreateTileWideText03(); wideTile.TextHeadingWrap.Text = "25 degrees in Moscow"; wideTile.SquareContent = squareTile; TileUpdateManager.CreateTileUpdaterForApplication().Update(squareTile.CreateNotification()); 


рдпрд╣рд╛рдВ, рджреЛ рдкреНрд░рдХрд╛рд░ рдХреА рдЯрд╛рдЗрд▓реЛрдВ рдХрд╛ рдПрдХ "рдмрдВрдбрд▓" рд╡рд░реНрдЧ рдЯрд╛рдЗрд▓ рдЪреМрдбрд╝реА рдЯрд╛рдЗрд▓ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдЗрдВрдЧрд┐рдд рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ редquareContent = squareTile;

2.4ред рдЯрд╛рдЗрд▓реНрд╕ рдореЗрдВ рдЫрд╡рд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рд▓рд┐рдВрдХред

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

рдЗрди рдЪрд┐рддреНрд░реЛрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЫреЛрдЯреА рд╕рд╣рд╛рдпрдХ рд╡рд┐рдзрд┐ рдЬреЛрдбрд╝реЗрдВред

 private void ImageLiveTile(string squareImageUri, string wideImageUri) { var tile = CreateNotification(String.Format(@"<tile> <visual> <binding template=""TileSquareImage""> <image id=""1"" src=""{0}"" alt=""alt text""/> </binding> <binding template=""TileWideImage""> <image id=""1"" src=""{1}"" alt=""alt text""/> </binding> </visual> </tile>",squareImageUri,wideImageUri)); TileUpdateManager.CreateTileUpdaterForApplication().Update(tile); } 


рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдПрд╕реЗрдЯреНрд╕ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд╣рдорд╛рд░реЗ рдЖрд╡реЗрджрди рдореЗрдВ рд╕реНрдерд┐рдд рдЯрд╛рдЗрд▓ рдХреИрд╕реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХреА рдЬрд╛рдП

 ImageLiveTile(@"Assets\SquareTileLogo.png", @"Assets\WideTileLogo.png"); 


рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рдЖрдк рдирд┐рдореНрди рдЯрд╛рдЗрд▓ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ:

рдЫрд╡рд┐
рдЫрд╡рд┐


рд╕рд╛рдкреЗрдХреНрд╖ рд░рд╛рд╕реНрддреЛрдВ рдХреЗ рдмрдЬрд╛рдп, рдПрдХ рдирд┐рд░рдкреЗрдХреНрд╖ рдкрде рдХреЗ рд╕рд╛рде рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рддрдХ рдкрд╣реБрдВрдЪ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рднреА рд╣реИред рддреЛ рд╣рдореЗрдВ рдирд┐рдореНрди рдкрддреЗ рдкрд░ рдПрдХ рд╕рдорд╛рди рдкрд░рд┐рдгрд╛рдо рдорд┐рд▓рддрд╛ рд╣реИ:

 ImageLiveTile(@"ms-appx:///Assets/SquareTileLogo.png", @"ms-appx:///Assets/WideTileLogo.png"); 


рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╡реЗрдм рд╕рдВрд╕рд╛рдзрдиреЛрдВ рд╕реЗ рдЪрд┐рддреНрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рднреА рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ 150x150 рд╡рд░реНрдЧ рдЯрд╛рдЗрд▓ рдФрд░ рдПрдХ 320x159 рдЪреМрдбрд╝реА рдЯрд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП рдПрдХ рд╣реА рдлреЛрдЯреЛ рд▓реЗрдВред

 ImageLiveTile(@"http://farm5.staticflickr.com/4019/4529892979_23bcdc7b1e.jpg", @"http://farm5.staticflickr.com/4019/4529892979_23bcdc7b1e_n.jpg"); 


рдЫрд╡рд┐
рдЫрд╡рд┐


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

рд╕реНрдерд╛рдиреАрдп рднрдВрдбрд╛рд░рдг рдореЗрдВ рдЯрд╛рдЗрд▓реЛрдВ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рдирд╛ рднреА рд╕рдВрднрд╡ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, ms-appdata рдЙрдкрд╕рд░реНрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ : /// рд╕реНрдерд╛рдиреАрдп /

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдЫреЛрдЯреА рд╕рд░рд▓ рд╕рд╣рд╛рдпрдХ рд╡рд┐рдзрд┐ рдЬреЛрдбрд╝реЗрдВ, рдЬреЛ рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рдПрдХ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдкрддреЗ рд╕реЗ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдирд╛рдо рдХреЗ рд╕рд╛рде рдлрд╝рд╛рдЗрд▓ рд╕рдВрдЧреНрд░рд╣рдг рдХреЗ рд▓рд┐рдП рдлрд╝рд╛рдЗрд▓ рд╕рд╣реЗрдЬрддреА рд╣реИ:

 private async Task SaveImage(string url, string fileName) { var client = new HttpClient(); var bytes = await client.GetByteArrayAsync(url); var file= await ApplicationData.Current.LocalFolder.CreateFileAsync(fileName,CreationCollisionOption.ReplaceExisting); var writeStream = await file.OpenAsync(FileAccessMode.ReadWrite); var streamWriter = new BinaryWriter(writeStream.AsStreamForWrite()); streamWriter.Write(bytes); streamWriter.Flush(); } 


рдЕрдм рд╣рдо рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рд╕реНрдерд╛рдиреАрдп рднрдВрдбрд╛рд░рдг рдореЗрдВ рд╕рд╣реЗрдЬ рд╕рдХрддреЗ рд╣реИрдВ

 await SaveImage(@"http://farm5.staticflickr.com/4019/4529892979_23bcdc7b1e.jpg", "squareTile.jpg"); await SaveImage(@"http://farm5.staticflickr.com/4019/4529892979_23bcdc7b1e_n.jpg", "wideTile.jpg"); 


рдФрд░ рдПрдХ рдЬреАрд╡рд┐рдд рдЯрд╛рдЗрд▓ рдмрдирд╛рддреЗ рд╕рдордп рдЙрд╕рдХреА рдУрд░ рдореБрдбрд╝реЗрдВ

 ImageLiveTile(@"ms-appdata:///local/squareTile.jpg", @"ms-appdata:///local/wideTile.jpg"); 


3. рдПрдХ рдЬреАрд╡рд┐рдд рдЯрд╛рдЗрд▓ рдХреЗ рдЬреАрд╡рди рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рдирд╛ред


рдЬреИрд╕рд╛ рдХрд┐ рд╣рдордиреЗ рдКрдкрд░ рджреЗрдЦрд╛, рдЯрд╛рдЗрд▓реНрд╕ рд╕реЗ рдХрд┐рд╕реА рддрд░рд╣ рдХреА рдЬрд╛рдирдХрд╛рд░реА рдорд┐рд▓рддреА рд╣реИред рдЖрдк рдЗрд╕ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рдЬреАрд╡рдирдХрд╛рд▓ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдФрд░ рдЯрд╛рдЗрд▓реНрд╕ рдХреЗ рдкреНрд░рджрд░реНрд╢рди рд╕рдордп рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

3.1ред рдПрдХ рдЯрд╛рдЗрд▓ рдХреЛ рдирд┐рд╖реНрдХреНрд░рд┐рдп рдХрд░рдирд╛

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗ рдХрд┐ рдПрдХ рдЯрд╛рдЗрд▓ рдХреЛ рдХреИрд╕реЗ рдирд┐рд╖реНрдХреНрд░рд┐рдп рдХрд┐рдпрд╛ рдЬрд╛рдП:

 TileUpdateManager.CreateTileUpdaterForApplication().Clear(); 


рдЗрд╕ рдкрджреНрдзрддрд┐ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЯрд╛рдЗрд▓реНрд╕ рдХреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдЯрд╛рдЗрд▓ рдХреЗ рд╕рд╛рде рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

3.2ред рдПрдХ рдЯрд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП рд╕рдордп рд╕реАрдорд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдирд╛ред

рд╣рдо рдПрдХ рдЯрд╛рдЗрд▓ рдХреЗ рдЬреАрд╡рдирдХрд╛рд▓ рдХреЛ рддрдм рднреА рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрдм рдЗрд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣ рдЙрди рдШрдЯрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдХреБрдЫ рд╕рдордп рдмрд╛рдж рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХрддрд╛ рдЦреЛ рджреЗрддреЗ рд╣реИрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкреНрд░рд╕рд╛рд░рдг рдореЗрдВ рд╡рд░реНрддрдорд╛рди рдкреНрд░рд╕рд╛рд░рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдирд╛)ред

рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ, 10 рд╕реЗрдХрдВрдб рдХреЗ рдмрд╛рдж рд▓рд╛рдЗрд╡ рдЯрд╛рдЗрд▓ рдХреЛ рдмрдВрдж рдХрд░ рджреЗрдВред
 var tile = CreateNotification(@"<tile> <visual> <binding template=""TileSquareBlock""> <text id=""1"">40</text> <text id=""2"">Degrees</text> </binding> <binding template=""TileWideText03""> <text id=""1"">40 degrees in Moscow</text> </binding> </visual> </tile>"); tile.ExpirationTime = DateTimeOffset.UtcNow.AddSeconds(10); TileUpdateManager.CreateTileUpdaterForApplication().Update(tile); 


рдХреЛрдб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдФрд░ рдЖрд╡реЗрджрди рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд▓рд╛рдЗрд╡ рдЯрд╛рдЗрд▓ рдХреИрд╕реЗ рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИ рдФрд░ 10 рд╕реЗрдХрдВрдб рдХреЗ рдмрд╛рдж рдЧрд╛рдпрдм рд╣реЛ рдЬрд╛рддреА рд╣реИред

3.3ред рд╢реЗрдбреНрдпреВрд▓реНрдб рдЯрд╛рдЗрд▓ рдбрд┐рд╕реНрдкреНрд▓реЗ рд╕реЗрдЯрд┐рдВрдЧред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдХреЛрдИ рдШрдЯрдирд╛ рдПрдХ рдШрдВрдЯреЗ рдореЗрдВ рд╢реБрд░реВ рд╣реЛрддреА рд╣реИ, рддреЛ рд╢рд╛рдпрдж рд╣рдо рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдЯрд╛рдЗрд▓ рдХреЛ рдЕрднреА рдкреНрд░рджрд░реНрд╢рд┐рдд рди рдХрд┐рдпрд╛ рдЬрд╛рдП, рд▓реЗрдХрд┐рди рдПрдХ рдШрдВрдЯреЗ рдореЗрдВ, рдЬрдм рдпрд╣ рдШрдЯрдирд╛ рдШрдЯрддреА рд╣реИред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рд╣рдо 10 рд╕реЗрдХрдВрдб рдХреЗ рдмрд╛рдж рдПрдХ рдЯрд╛рдЗрд▓ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рд▓рд┐рдЦреЗрдВрдЧреЗред

 var tile = CreateNotification(@"<tile> <visual> <binding template=""TileSquareBlock""> <text id=""1"">10</text> <text id=""2"">Degrees</text> </binding> <binding template=""TileWideText03""> <text id=""1"">10 degrees in Moscow</text> </binding> </visual> </tile>"); var scheduledTileNotification = new ScheduledTileNotification(tile.Content, DateTimeOffset.UtcNow.AddSeconds(10)); TileUpdateManager.CreateTileUpdaterForApplication().AddToSchedule(scheduledTileNotification); 


ScheduledTileNotification рд╡рд┐рдзрд┐ рдПрдХ XmlDocument рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИред (рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЯрд╛рдЗрд▓ред рдХрдВрдЯреЗрдВрдЯ рдореЗрдВ рдПрдХ XmlDocument рд╣реЛрддрд╛ рд╣реИ)ред

рдЙрд╕реА рддрд░рд╣, рд╣рдо рдЯрд╛рдЗрд▓ рд▓реЙрдиреНрдЪ рдХреЗ рд╕рд╛рде рдЕрдиреБрд╕реВрдЪрд┐рдд рд▓реЙрдиреНрдЪ рдХреЛ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, 15 рд╕реЗрдХрдВрдб рдХреЗ рд▓рд┐рдП 10 рд╕реЗрдХрдВрдб рдХреЗ рдмрд╛рдж рдЯрд╛рдЗрд▓ рдмрдирд╛рдиреЗ рд╡рд╛рд▓рд╛ рдХреЛрдб рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:

 var scheduledTileNotification = new ScheduledTileNotification(tile.Content, DateTimeOffset.UtcNow.AddSeconds(10)); scheduledTileNotification.ExpirationTime = DateTimeOffset.UtcNow.AddSeconds(25); TileUpdateManager.CreateTileUpdaterForApplication().AddToSchedule(scheduledTileNotification); 


3.4ред рдЕрдиреБрд╕реВрдЪрд┐рдд рдЯрд╛рдЗрд▓ рд╕реВрдЪреА рдкреНрд░рдмрдВрдзрди (рд╕реВрдЪреА рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрддрд┐, рд╡рд┐рд▓реЛрдкрди)

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

 scheduledTileNotification.Id = "1"; 


рд╣рдо рдПрдХ рд╕рдордп рдкрд░ рд╕рднреА рд╕реНрдерд╛рдкрд┐рдд рдЯрд╛рдЗрд▓реЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЯрд╛рдЗрд▓рдЕрдкрдбреЗрдЯрдореИрдиреЗрдЬрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдХреНрд░реЗрдЯрдЯреЗрдЗрд▓ рдпреВрдкрдбреИрдЯрд░рдлреЙрд░рдкреНрд▓реЗрдХреНрд╢рди () рд╡рд┐рдзрд┐

 var scheduledTiles = TileUpdateManager.CreateTileUpdaterForApplication(); 


рдЖрдк рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рдХреНрд░рдорд╢рдГ рд╣рдорд╛рд░реА рдЯрд╛рдЗрд▓ рддрдХ рдкрд╣реБрдВрдЪ рд╕рдХрддреЗ рд╣реИрдВ

 var tile = scheduledTiles.FirstOrDefault(i => i.Id == "1"); 


рдЕрдм, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рддреЛ рд╣рдо рдЗрд╕ рдЯрд╛рдЗрд▓ рдХреЛ рд╣рдЯрд╛ рд╕рдХрддреЗ рд╣реИрдВред

 if(tile!=null) { TileUpdateManager.CreateTileUpdaterForApplication().RemoveFromSchedule(tile); } 


4. рдЯрд╛рдЗрд▓реНрд╕ рдХреА рдХрддрд╛рд░ред


WinRT рдПрдкреАрдЖрдИ рдореЗрдВ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ 5 рдЯрд╛рдЗрд▓реЛрдВ рдХреА рдПрдХ рдХрддрд╛рд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реИ, рдЬреЛ рдХрд┐ рдЪрдХреНрд░реАрдп рд░реВрдк рд╕реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХреА рдЬрд╛рдПрдЧреАред

рд╣рдореЗрдВ рдмрд╕ рдЗрддрдирд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдХрддрд╛рд░ рд╕рдорд░реНрдерди рд╡рд┐рдзрд┐ рдХреЛ рд╕рдХреНрд╖рдо рдХрд░реЗрдВ:

 TileUpdateManager.CreateTileUpdaterForApplication().EnableNotificationQueue(true); 


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

 private void SetTile(int value) { var tile = CreateNotification(String.Format(@"<tile> <visual> <binding template=""TileSquareBlock""> <text id=""1"">{0}</text> <text id=""2"">Degrees</text> </binding> <binding template=""TileWideText03""> <text id=""1"">{0} degrees in Moscow</text> </binding> </visual> </tile>",value)); TileUpdateManager.CreateTileUpdaterForApplication().Update(tile); } 


рдЕрдм, рдХрдИ рдЯрд╛рдЗрд▓реЛрдВ рдХреА рдПрдХ рдХрддрд╛рд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдЪрдХреНрд░реАрдп рд░реВрдк рд╕реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

 TileUpdateManager.CreateTileUpdaterForApplication().Clear(); TileUpdateManager.CreateTileUpdaterForApplication().EnableNotificationQueue(true); SetTile(15); SetTile(25); SetTile(35); 


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

5. рдЯрд╛рдЗрд▓реНрд╕ рдореЗрдВ рдШрдЯрдирд╛рдУрдВ (рдмреИрдЬ) рдХрд╛ рд╕реВрдЪрдХ


рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЯрд╛рдЗрд▓реНрд╕ (рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рд▓рд╛рдЗрд╡ рдпрд╛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдЯрд╛рдЗрд▓) рдкрд░ рдШрдЯрдирд╛ рд╕реВрдЪрдХ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реИред рдШрдЯрдирд╛ рд╕реВрдЪрдХ рдирд┐рдЪрд▓реЗ рджрд╛рдПрдВ рдХреЛрдиреЗ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдЖрдк рдПрдХ рд╕рдВрдЦреНрдпрд╛ (1 рд╕реЗ 99 рддрдХ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдмрд┐рдирд╛ рдкрдврд╝реЗ рд╕рдВрджреЗрд╢реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛) рдпрд╛ рдПрдХ рдЧреНрд▓рд┐рдлрд╝ (рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реНрдЯреЗрдЯ) рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдЖрдк рд░реВрд╕реА рдореЗрдВ MSDN рдкреГрд╖реНрда рдкрд░ рдИрд╡реЗрдВрдЯ рд╕рдВрдХреЗрддрдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣рд╛рдВ рд╣рдо рдШрдЯрдирд╛ рд╕реВрдЪрдХ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рддреЗ рд╣реИрдВред

рд╕рдВрдХреЗрддрдХреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдмреИрдЬрдЕрдкрдбреЗрдЯрдореИрдиреЗрдЬрд░ рд╣реИ рдЬрд┐рд╕рдХреА рдПрдкреАрдЖрдИ рд▓рдЧрднрдЧ рдЯрд╛рдЗрд▓рдЕрдкрдбреЗрдЯрдореИрдиреЗрдЬрд░ рдПрдкреАрдЖрдИ рдХреЗ рд╕рдорд╛рди рд╣реИред

рдЖрдЗрдП рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ рдХрд┐ рдЗрд╡реЗрдВрдЯ рдЗрдВрдбрд┐рдХреЗрдЯрд░ рдореЗрдВ рдирдВрдмрд░ 12 рдХреЛ рдХреИрд╕реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдП, рдЗрд╕рдХреЗ рд▓рд┐рдП рд╣рдо MSDN /> рдкреЗрдЬ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдЯреЗрдореНрдкрд▓реЗрдЯ рд▓реЗрддреЗ рд╣реИрдВ

 var xmlDocument = new XmlDocument(); xmlDocument.LoadXml(@"<badge value=""12""/>")); var badgeNotification = new BadgeNotification(xmlDocument); BadgeUpdateManager.CreateBadgeUpdaterForApplication().Update(badgeNotification); 


рдЕрдм рд╣рдо рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдЯрд╛рдЗрд▓ рдФрд░ рд▓рд╛рдЗрд╡ рдЯрд╛рдЗрд▓ рджреЛрдиреЛрдВ рдкрд░ 12 рдХреЗ рдорд╛рди рдХреЗ рд╕рд╛рде рд╕рдВрдХреЗрддрдХ рдХрд╛ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

рдЫрд╡рд┐
рдЫрд╡рд┐


рдЧреНрд▓рд┐рдлрд╝ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдПрдХ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЗ рд╕рд╛рде xml рдореЗрдВ рдорд╛рди 12 рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, "рдзреНрдпрд╛рди" рдкрд░

 xmlDocument.LoadXml(@"<badge value=""attention""/>")); 

рдЫрд╡рд┐
рдЯрд╛рдЗрд▓реНрд╕ рдХреА рддрд░рд╣, рд╣рдо рдШрдЯрдирд╛ рд╕реВрдЪрдХ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдордп рд╕реАрдорд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

 badgeNotification.ExpirationTime = DateTimeOffset.UtcNow.AddSeconds(10); 


рдФрд░, рдЗрд╕реА рддрд░рд╣, рд╣рдо рд╕рдВрдХреЗрддрдХ рдХреЛ рд╣рдЯрд╛ рд╕рдХрддреЗ рд╣реИрдВ
 BadgeUpdateManager.CreateBadgeUpdaterForApplication().Clear(); 


6. рдЯрд╛рдЗрд▓реЛрдВ рдХрд╛ рдЖрд╡рдзрд┐рдХ рдЕрджреНрдпрддрди (рджреВрд░рд╕реНрде рд╕рдВрд╕рд╛рдзрдиреЛрдВ рд╕реЗ)


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

рд╕рд╛рджрдЧреА рдХреЗ рд▓рд┐рдП, рд╣рдо рдПрдХ рдирдпрд╛ рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдПрдВрдЧреЗ рдЬреЛ рд╣рдореЗрдВ рд╡рд░реНрддрдорд╛рди рд╕рдордп рдЯрд╛рдЗрд▓ рджреЗрддрд╛ рд╣реИред рдпрджрд┐ рдпрд╣ ASP.NET рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╣реИ, рддреЛ рдПрдХ HttpHandler рдЬреЛрдбрд╝реЗрдВ рдЬреЛ рдореМрдЬреВрджрд╛ рд╕рдордп рдХреЗ рд╕рд╛рде рдПрдХ xml рдЯрд╛рдЗрд▓ рд▓реМрдЯрд╛рддрд╛ рд╣реИ:

 public class TileHandler : IHttpHandler { public void ProcessRequest(HttpContext context) { context.Response.ContentType = "text/xml"; context.Response.Write(String.Format(@"<tile> <visual> <binding template=""TileSquareText02""> <text id=""1"">{0}</text> <text id=""2"">current time</text> </binding> <binding template=""TileWideText03""> <text id=""1"">Time: {0}</text> </binding> </visual> </tile> ",DateTime.Now.ToShortTimeString())); } public bool IsReusable {get { return false; }} } 


рдЕрдм, рдпрджрд┐, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣реИрдВрдбрд▓рд░ рд▓реЛрдХрд▓рд╣реЛрд╕реНрдЯ : 28457 / рдЯрд╛рдЗрд▓рд╣реИрдВрдбрд▓рд░.рд╢реИрдХреНрд╕ рдкрд░ рд╕реНрдерд┐рдд рд╣реИ, рддреЛ рд╣рдо рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдкрддреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдЖрд╡реЗрджрди рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рд╣рд░ рдЖрдзреЗ рдШрдВрдЯреЗ рдореЗрдВ рдЯрд╛рдЗрд▓ рдХреА рдЬрд╛рдБрдЪ рдФрд░ рдЕрджреНрдпрддрди рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИ:

 TileUpdateManager.CreateTileUpdaterForApplication().StartPeriodicUpdate(new Uri("http://localhost:28457/TileHandler.ashx"),PeriodicUpdateRecurrence.HalfHour); 


рд╣рдо рдЯрд╛рдЗрд▓ рдХреЛ рддреБрд░рдВрдд рдЕрджреНрдпрддрди рдХрд░рдирд╛ рд╢реБрд░реВ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕рдордп рдХреЗ рдмрд╛рджред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдирд┐рдореНрди рдХреЛрдб 3 рдШрдВрдЯреЗ рдХреЗ рдмрд╛рдж рдЯрд╛рдЗрд▓реЛрдВ рдХреА рдЬрд╛рдБрдЪ рдФрд░ рдЕрджреНрдпрддрди рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИ:

 TileUpdateManager.CreateTileUpdaterForApplication().StartPeriodicUpdate(new Uri("http://localhost:28457/TileHandler.ashx"), DateTimeOffset.UtcNow.AddHours(10), PeriodicUpdateRecurrence.HalfHour); 


рдЕрдм, рдпрджрд┐ рд╣рдо рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЪрд▓рд╛рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдЪреМрдбрд╝реА рдФрд░ рдЪреМрдХреЛрд░ рдЯрд╛рдЗрд▓реНрд╕ рдХреЗ рд▓рд┐рдП рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЯрд╛рдЗрд▓ рджреЗрдЦреЗрдВрдЧреЗ:

рдЫрд╡рд┐
рдЫрд╡рд┐


рдЯрд╛рдЗрд▓реЛрдВ рдХреА "рдХрддрд╛рд░" рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рднреА рд╕рдВрднрд╡ рд╣реИ (рдЬреИрд╕рд╛ рдХрд┐ "рдЯрд╛рдЗрд▓реЛрдВ рдХреА рдХрддрд╛рд░" рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╣реИ)ред рд╡рд╛рдХреНрдп-рд╡рд┐рдиреНрдпрд╛рд╕ рд▓рдЧрднрдЧ рд╕рдорд╛рди рд╣реИ рдФрд░ рдПрдХ рдПрдХрд▓ рдЙрд░реА рдХреЗ рдмрдЬрд╛рдп, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ 5 рддрддреНрд╡реЛрдВ рддрдХ рдЙрд░реА рдХреЗ рд╕рдВрдЧреНрд░рд╣ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реИред

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдореЗрдВ рдХрддрд╛рд░ рд╕рдорд░реНрдерди рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:

 TileUpdateManager.CreateTileUpdaterForApplication().EnableNotificationQueue(true); Uri[] uriCollection=new [] { new Uri("http://localhost:28457/TileHandler1.ashx"), new Uri("http://localhost:28457/TileHandler2.ashx"), new Uri("http://localhost:28457/TileHandler3.ashx"), new Uri("http://localhost:28457/TileHandler4.ashx"), new Uri("http://localhost:28457/TileHandler5.ashx"), }; TileUpdateManager.CreateTileUpdaterForApplication().StartPeriodicUpdateBatch(uriCollection,PeriodicUpdateRecurrence.HalfHour); 


рдЗрд╡реЗрдВрдЯ рдЖрдЗрдбреЗрдВрдЯрд┐рдлрд╝рд╛рдпрд░ рдХреЛ рдЙрд╕реА рддрд░рд╣ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рд╕реНрдерд╛рдиреАрдп рдкрддрд╛ рд╣реИ: 28457 / рдмреИрдЬрд╣реИрдВрдбрд▓рд░.рд╢рдХреНрд╕ рдЬреЛ рдлреЙрд░реНрдо рдХрд╛ xml рд▓реМрдЯрд╛рддрд╛ рд╣реИ />

рдирд┐рдореНрди рдХреЛрдб рд╣рд░ рдЖрдзреЗ рдШрдВрдЯреЗ рдореЗрдВ рд╕рдВрдХреЗрддрдХ рд╕реНрдерд┐рддрд┐ рдХрд╛ рдЕрдиреБрд░реЛрдз рдФрд░ рдЕрджреНрдпрддрди рдХрд░реЗрдЧрд╛ред

 BadgeUpdateManager.CreateBadgeUpdaterForApplication().StartPeriodicUpdate(new Uri("http://localhost:28457/TileBadgeHandler.ashx"),PeriodicUpdateRecurrence.HalfHour); 


7. рдорд╛рдзреНрдпрдорд┐рдХ рдЯрд╛рдЗрд▓реЗрдВ


рдорд╛рдзреНрдпрдорд┐рдХ рдЯрд╛рдЗрд▓реЗрдВ рдХреБрдЫ рдкреГрд╖реНрдареЛрдВ рдкрд░ рдХреБрдЫ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕рд╛рде рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдЪрд▓рд╛рдирд╛ рд╕рдВрднрд╡ рдмрдирд╛рддреА рд╣реИрдВред рдорд╛рдзреНрдпрдорд┐рдХ рдЯрд╛рдЗрд▓ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдХрд╛рдлреА рд╡рд┐рд╕реНрддреГрдд рдЙрджрд╛рд╣рд░рдг MSDN рдХреЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдорд╛рдзреНрдпрдорд┐рдХ рдЯрд╛рдЗрд▓ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред

7.1ред рджреНрд╡рд┐рддреАрдпрдХ рдЯрд╛рдЗрд▓ рд╕реБрд░рдХреНрд╖рд┐рдд рдХрд░рдирд╛

рдПрдХ рдорд╛рдзреНрдпрдорд┐рдХ рдЯрд╛рдЗрд▓ рдХреЛ рдареАрдХ рдХрд░рдирд╛ рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИ:

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЯрд╛рдЗрд▓ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрдЯрди рд╣реИ, рддреЛ рд╣рдо рдЯрд╛рдЗрд▓ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдЯрди рдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╣реИрдВрдбрд▓рд░ рдХреЛ рд▓рд┐рдЦреЗрдВрдЧреЗ (рд╕рд╛рджрдЧреА рдХреЗ рд▓рд┐рдП рд╣рдо рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдЯрд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП рдЙрд╕реА рд▓реЛрдЧреЛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ):

 private async void PinToStart_Click(object sender, RoutedEventArgs e) { SecondaryTile secondaryTile = new SecondaryTile() { TileId = "MyTileId", ShortName = "Tile short name", DisplayName = "Tile display name", Arguments = "MyTileArgument", TileOptions = TileOptions.ShowNameOnLogo | TileOptions.ShowNameOnWideLogo, Logo = new Uri("ms-appx:///assets/SquareTileLogo.png"), WideLogo = new Uri("ms-appx:///assets/WideTileLogo.png"), }; bool isPinned = await secondaryTile.RequestCreateAsync(); } 


рдЯрд╛рдЗрд▓рдЖрдИрдб рдПрдХ рдЯрд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рд╣реИ рдФрд░ рдмрд╛рдж рдореЗрдВ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЯрд╛рдЗрд▓ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рд╣рдЯрд╛рдПрдВ, рдЕрдкрдбреЗрдЯ, рдкреНрд░рд╛рд░рдВрдн, рдЖрджрд┐)

рдореБрдЦреНрдп рдЯрд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП, рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ "рдРрдк" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЛ рдЖрд░рдХреНрд╖рд┐рдд рдорд╛рдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЗрд╕ рддрд░рд╣ рдХреЗ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЗ рд╕рд╛рде рдПрдХ рдЯрд╛рдЗрд▓ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдЪрд▓реЗрдЧрд╛ (рдХреНрдпреЛрдВрдХрд┐ рдЬрд╛рд╣рд┐рд░ рд╣реИ рдХрд┐ рдРрд╕реА рдЯрд╛рдЗрд▓ рдкрд╣рд▓реЗ рд╕реЗ рдореМрдЬреВрдж рд╣реИ)ред рдЗрд╕ рддрд░рд╣ рдХреЗ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЗ рд╕рд╛рде рдПрдХ рдЯрд╛рдЗрд▓ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рд╢реБрд░реВ рд╕реНрдХреНрд░реАрди рдФрд░ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреА рд╕реВрдЪреА рд╕реЗ рд▓рд┐рдВрдХ рдХрд╛ рдиреБрдХрд╕рд╛рди рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рдорд╛рдзреНрдпрдорд┐рдХ рдЯрд╛рдЗрд▓ рдХреЗ рд╕рд╛рде рдЖрдЧреЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ "рдмрдВрдж рд╣реЛ рдЬрд╛рддреА рд╣реИ"ред

рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдпрд╣ рдмрдЧ, рдФрд░ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рдпрд╣ рддрдп рд╣реЛ рдЬрд╛рдПрдЧрд╛, рд▓реЗрдХрд┐рди, рдХрд┐рд╕реА рднреА рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рджреГрдврд╝рддрд╛ рд╕реЗ рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХреА рдЬрд╛рддреА рд╣реИ рдХрд┐ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ "рдРрдк" рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░реЗрдВред
рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЯрд╛рдЗрд▓ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рдВрд╡рд╛рдж рдмреЙрдХреНрд╕ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛:

рдЫрд╡рд┐

9. "рдорд╛рдзреНрдпрдорд┐рдХ рдЯрд╛рдЗрд▓ рд╕реЗ рдЖрд╡реЗрджрди рдХреА рд╕рдХреНрд░рд┐рдпрддрд╛

рд╣рдордиреЗ рджреНрд╡рд┐рддреАрдпрдХ рдЯрд╛рдЗрд▓ рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рдж, рджреНрд╡рд┐рддреАрдпрдХ рдЯрд╛рдЗрд▓ рджреНрд╡рд╛рд░рд╛ рдЖрд╡реЗрджрди рдХреЗ рд╕рдХреНрд░рд┐рдпрдг рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред
рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, AppXaml.cs рд╡рд┐рдзрд┐ рдореЗрдВ, рд╣рдо args рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рддрд░реНрдХреЛрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╣рдо рдЗрд╕ рдкреИрд░рд╛рдореАрдЯрд░ рд╕реЗ рдЯрд╛рдЗрд▓рдЖрдИрдб рдЯрд╛рдЗрд▓ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдФрд░ рддрд░реНрдХ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╕рд╛рджрдЧреА рдХреЗ рд▓рд┐рдП, рд╣рдо рдПрдХ рдкрд░рд┐рджреГрд╢реНрдп рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ рдЬрдм рдЯрд╛рдЗрд▓ рджреНрд╡рд╛рд░рд╛ рд╕рдХреНрд░рд┐рдп рд╣реЛрдиреЗ рдкрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдкреГрд╖реНрда рдЦреБрд▓рддрд╛ рд╣реИред
рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ рд╣реА рдлрд╝рд╛рдЗрд▓ рдореЗрдВ App.xaml.cs OnLaunch рд╡рд┐рдзрд┐ рдореЗрдВ, рд╡рд┐рдзрд┐ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рджреВрд╕рд░реЗ рдкреГрд╖реНрда рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдЬреЛрдбрд╝реЗрдВ, рдмрд╢рд░реНрддреЗ рдХрд┐ рдпрд╣ рдПрдХ рджреНрд╡рд┐рддреАрдпрдХ рдЯрд╛рдЗрд▓ рд╕реЗ рд╕рдХреНрд░рд┐рдп рд╣реЛ

 protected override void OnLaunched(LaunchActivatedEventArgs args) { var tileId= args.TileId; if (tileId == "MyTileId") { if(Window.Current.Content ==null) { Window.Current.Content=new Frame(); } var secondaryTileArgument = args.Arguments; ((Frame)Window.Current.Content).Navigate(typeof(SecondaryTilePage), secondaryTileArgument); Window.Current.Activate(); return; } тАж } 


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

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

13. = рдирд┐рд╢реНрдЪрд┐рдд рдЯрд╛рдЗрд▓ рд╣рдЯрд╛рдирд╛

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

рдмрдЯрди рдкрд░ рдПрдХ рдЕрдирдкрд┐рди рдмрдЯрди рдФрд░ рд╣реИрдВрдбрд▓рд░ рдЬреЛрдбрд╝реЗрдВ:

 private async void UnPinFromStart_Click(object sender, RoutedEventArgs e) { if(Windows.UI.StartScreen.SecondaryTile.Exists("MyTileId")) { SecondaryTile secondaryTile = new SecondaryTile("MyTileId"); bool unpinned = await secondaryTile.RequestDeleteAsync(); } } 


SecondaryTile.Exists () рд╡рд┐рдзрд┐ рдЖрдкрдХреЛ рдбреЗрд╕реНрдХрдЯреЙрдк рдкрд░ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдЯрд╛рдЗрд▓ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИред
рдЗрд╕ рдХреЛрдб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╕рдордп, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдпрд╣ рдкреБрд╖реНрдЯрд┐ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП рдХрд┐ рд╡рд╣ рджреНрд╡рд┐рддреАрдпрдХ рдЯрд╛рдЗрд▓ рдХреЛ рд╣рдЯрд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рдЯрд╛рдЗрд▓ рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛

рдЫрд╡рд┐

4. "рджреНрд╡рд┐рддреАрдпрдХ рдЯрд╛рдЗрд▓ рдХрд╛" рдкреБрдирд░реЛрджреНрдзрд╛рд░ "

рд╕реЗрдХреЗрдВрдбрд░реА рдЯрд╛рдЗрд▓реНрд╕ рдХреЛ рднреА рд▓рд╛рдЗрд╡ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рджреНрд╡рд┐рддреАрдпрдХ рдЯрд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП рдПрдкреАрдЖрдИ рдкреНрд░рд╛рдердорд┐рдХ рдЯрд╛рдЗрд▓ рдХреЗ рд╕рдорд╛рди рд╣реИред

рджреНрд╡рд┐рддреАрдпрдХ рдЯрд╛рдЗрд▓ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЯрд╛рдЗрд▓рдЕрдкрдбреЗрдЯрдореИрдиреЗрдЬрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред CreateTileUpdaterForSecondaryTile (рдЯрд╛рдЗрд▓рдЖрдИрдб) рд╡рд┐рдзрд┐ред

рдПрдХ рдорд╛рдзреНрдпрдорд┐рдХ рдЯрд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдорд╛рди рдЙрджрд╛рд╣рд░рдг

 var tile = CreateNotification(@"<tile> <visual> <binding template=""TileSquareBlock""> <text id=""1"">25</text> <text id=""2"">Degrees</text> </binding> <binding template=""TileWideText03""> <text id=""1"">25 degrees in Moscow</text> </binding> </visual> </tile>"); TileUpdateManager.CreateTileUpdaterForSecondaryTile("MyTileId").Update(tile); 


8. рдкреГрд╖реНрдарднреВрдорд┐ рдХрд╛рд░реНрдп рдФрд░ рдкреБрд╢ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд▓рд╛рдЗрд╡ рдЯрд╛рдЗрд▓ рдкреНрд░рдмрдВрдзрди


BackgroundTask рдФрд░ PushNotification рд╡рд┐рд╖рдп рдкреНрд░рддреНрдпреЗрдХ рдЕрд▓рдЧ рд▓реЗрдЦ рдХреЗ рд▓рд╛рдпрдХ рд╣реИрдВред
рдпрд╣рд╛рдВ рд╣рдо рджреЛрдиреЛрдВ рд╡рд┐рд╖рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЯрд╛рдЗрд▓ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрдд рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рддреЗ рд╣реИрдВред

8.1ред рдкреГрд╖реНрдарднреВрдорд┐ рдХрд╛ рдХрд╛рд░реНрдп

рдПрдХ рдкреГрд╖реНрдарднреВрдорд┐ рдХрд╛рд░реНрдп рдмрдирд╛рдиреЗ рдХрд╛ рдПрдХ рддреНрд╡рд░рд┐рдд рдкрд░рд┐рдЪрдп MSDN рдкрд░ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ

OnCompleted рдореЗрдердб рдореЗрдВ, рдЬрдм рдХрд┐рд╕реА рдмреИрдХрдЧреНрд░рд╛рдЙрдВрдб рдЯрд╛рд╕реНрдХ рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╣рдо LiveTile рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ

 void OnCompleted(BackgroundTaskRegistration sender, BackgroundTaskCompletedEventArgs args) { var tile = CreateNotification(String.Format(@"<tile> <visual> <binding template=""TileSquareText04""> <text id=""1"">{0}</text> <text id=""2""></text> </binding> <binding template=""TileSquareText02""> <text id=""1"">{0}</text> <text id=""2""></text> </binding> </visual> </tile>", DateTime.Now.ToString("hh:mm:ss"))); TileUpdateManager.CreateTileUpdaterForApplication().Update(tile); } 


2. 2. рдкреБрд╢ рдЕрдзрд┐рд╕реВрдЪрдирд╛

рд╡рд┐рдВрдбреЛрдЬ 8 рдореЗрдВ, рдкреБрд╢ рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди рдЕрдзрд┐рдХ рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реЛ рдЧрдП рд╣реИрдВ рдФрд░ рдЗрд╕рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдереЛрдбрд╝рд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реЛ рдЧрдпрд╛ рд╣реИред
рдХреИрд╕реЗ рд╕рд░реНрд╡рд░ рд╕реЗ WNS рд╕рд░реНрд╡рд░ рдореЗрдВ рд▓реЙрдЧ рдЗрди рдХрд░реЗрдВ рдФрд░ рдкреБрд╢ рд╕реВрдЪрдирд╛ рднреЗрдЬреЗрдВ MSDN рдкреГрд╖реНрда рдкрд░ рд╡рд░реНрдгрд┐рдд рд╣реИ ред рд╡рд╣рд╛рдВ, рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЗ рдЕрдВрдд рдореЗрдВ, рд╕рдорд╛рдкреНрдд рдХреЛрдб рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрд╣рд╛рдБ рдореИрдВ рдХреЗрд╡рд▓ рд╡рд┐рдзрд┐ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рджреЗ рджреВрдВрдЧрд╛:

рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ PostToWns (рд╕реНрдЯреНрд░рд┐рдВрдЧ рд░рд╣рд╕реНрдп, рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╕рд╛рдЗрдЬрд╝, рд╕реНрдЯреНрд░рд┐рдВрдЧ рдЙрдбрд╝реА, рд╕реНрдЯреНрд░рд┐рдВрдЧ xml, рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкреНрд░рдХрд╛рд░ = "wns / рдЯреЛрд╕реНрдЯ") {}

рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ, рдорд╛рди "wns" рдЯрд╛рдЗрд▓
xml рдорд╛рди рдХреЗ рд░реВрдк рдореЗрдВ, рдкрд╛рд╕ рдХрд░реЗрдВ рдЯрд╛рдЗрд▓ред

рдПрдХ рдЙрджрд╛рд╣рд░рдг:
 string xml = @"<tile> <visual> <binding template=""TileSquareText04""> <text id=""1"">Tile text1</text> <text id=""2"">Tile text2</text> </binding> <binding template=""TileSquareText02""> <text id=""1"">Tile text1</text> <text id=""2"">Tile text2</text> </binding> </visual> </tile>"; 


рдХреЗрд╡рд▓ рдХреИрдбреЗрдЯ - msdn рдкреГрд╖реНрда рдкрд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдореЗрд░реА рд╡рд┐рдзрд┐ рддрдм рддрдХ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддреА рдЬрдм рддрдХ рдХрд┐ рдореИрдВрдиреЗ рд╕рд╛рдордЧреНрд░реА-рдкреНрд░рдХрд╛рд░ рдФрд░ рд╕рд╛рдордЧреНрд░реА рдХреА рдЧрддрд┐ рдХреЛ рдирд╣реАрдВ рдЬреЛрдбрд╝рд╛:

 request.Headers.Add("X-WNS-Type", type); request.Headers.Add("Authorization", String.Format("Bearer {0}", accessToken.AccessToken)); request.ContentType = "text/xml"; request.ContentLength = xml.Length; 


рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЗ рдЕрдВрдд рдореЗрдВ рдПрдХ рдЪреИрдирд▓ рдмрдирд╛рдиреЗ рдФрд░ рдЦреЛрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рд┐рдВрдХ рд╣реИрдВ рдФрд░ рдбрдмреНрд▓реНрдпреВрдПрдирдПрд╕ рд╕рд░реНрд╡рд░ рдкрд░ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХрд╛ рд╡рд░реНрдгрди рд╣реИред
рдЧреБрдкреНрдд рдФрд░ рд╕рд╛рдЗрдб рдкреИрд░рд╛рдореАрдЯрд░реНрд╕ рдлреЙрд░реНрдо рдХреЗ рдорд╛рди рд╣реИрдВ
: рд╕рд╛рдЗрдб: "рдПрдордПрд╕-рдРрдк: // s-1-23-2-3112458577-1770873644-3250801218-3829720502-2556658560-1678414136464691272";
рд░рд╣рд╕реНрдп: "DcQWqb7eL7oIwVCr8yIOo-aQQRplPD33";

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпрд╣ рд╕рдм рд╣реИ рдХрд┐ рдЯрд╛рдЗрд▓ рдПрдкреАрдЖрдИ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред

PS рд▓реЗрдЦ рд▓рд┐рдЦрдиреЗ рдореЗрдВ рдорджрдж, рдорджрдж рдФрд░ рд╕рдорд░реНрдерди рдХреЗ рд▓рд┐рдП рдмрд╣реБрдореВрд▓реНрдп рд╕рд▓рд╛рд╣ рдХреЗ рд▓рд┐рдП habrazer Stas Pavlov stasus рдФрд░ Sergey Urusov petrishko рдХрд╛ рдЕрдзрд┐рдХ рдзрдиреНрдпрд╡рд╛рдж ред

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


All Articles