
рдкрд┐рдЫрд▓реЗ рдорд╣реАрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рд╕реЗ рдЪрд▓ рд░рд╣реЗ рдЖрд╡реЗрджрди рдХреЗ рдЖрдВрдХрдбрд╝реЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░:

рдпрд╣ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ 7 рд╡реЗрдВ рд╕рдВрд╕реНрдХрд░рдг рдХреА рд╕реНрдерд╛рдкрдирд╛ рдХреА рдХреБрд▓ рд╕рдВрдЦреНрдпрд╛ рдХрд╛ 30% рд╣реИред рд╡рд┐рдЪрд╛рд░ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдПрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдирд╛ рд╣реИ рдЬреЛ 7.1+ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реЛрдЧрд╛ред
рдЦреЗрд▓ рдЕрдВрдХ рдмрдирд╛рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдЧрдпрд╛ред
рдЖрдк рдЦреЗрд▓ рдХреЛ рдПрдХ рдмрд┐рдВрджреБ рд╕реЗ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред рдкреНрд░рддреНрдпреЗрдХ рд╕реНрддрд░ рдкрд░, рдПрдХ рдирдпрд╛ рдмрд┐рдВрджреБ рдЪреБрдиреЗрдВред рдпрджрд┐ рдЖрдк рдПрдХ рдкреБрд░рд╛рдиреЗ рдмрд┐рдВрджреБ рдХрд╛ рдЪрдпрди рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рд╣рд╛рд░ рдЬрд╛рддреЗ рд╣реИрдВред
рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╕реНрдЯреЛрд░ рдореЗрдВ рд╡рд┐рдХрд╕рд┐рдд рдФрд░ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдП рдЧрдП рдкреНрд░рддрд┐ рджрд┐рди рдкреНрд░рд╛рдкреНрдд рдЖрдБрдХрдбрд╝реЗ:

рдбрд┐рдЬрд╝рд╛рдЗрди
рдпрд╣ рдзреНрдпрд╛рди рд░рдЦрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рд╡рд┐рдВрдбреЛрдЬ рдлреЛрди 7 рдХреЗ рд▓рд┐рдП рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдбреЗрд╡рд▓рдкрдореЗрдВрдЯ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 2012 рдореЗрдВ рд╣реЛрддрд╛ рд╣реИ ред рдмреНрд▓реЗрдВрдб 2012 рдореЗрдВ рд▓реЗрдЖрдЙрдЯ рд▓реЗрдЖрдЙрдЯред рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЗ рд╕рдВрд╕реНрдХрд░рдг 13 рдореЗрдВ рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдЦреЛрд▓рддреЗ рд╕рдордп, рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рдЬрдмрд░рди рдПрдХ рдирдП рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдЖрд╡реЗрджрди рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИред
рдЦреЗрд▓ рдореЗрдВ 3 рд╕реНрдХреНрд░реАрди рд╣реИрдВ: рдкреНрд░рд╛рд░рдВрдн (рдпрд╣ рд╕реНрддрд░реЛрдВ рдХреЗ рдмреАрдЪ рдПрдХ рд╕реНрдХреНрд░реАрди рднреА рд╣реИ), рдПрдХ рд╕реНрддрд░ рд╕реНрдХреНрд░реАрди рдФрд░ рдПрдХ рдЕрдВрдд рд╕реНрдХреНрд░реАрдиред рдЗрд╕ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ, рд╕реБрдбреЛрдХреВ рдХреЗ рд╡рд┐рдкрд░реАрдд, рдЦрд┐рд▓рд╛рдбрд╝реА рд░реЗрдЯрд┐рдВрдЧ (рдЕрдВрдХреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛) рдХреЛ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИред рд░рддрд┐рди рдХреЛ рдПрдкреАрдЖрдИ (рдмрд┐рдирд╛ рдХрд┐рд╕реА рдЧрдВрднреАрд░ рд╕реБрд░рдХреНрд╖рд╛ рдХреЗ) рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдХрд╛рд░реНрдпрд╛рд▓рдп рдореЗрдВ рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзрд╛ рдХрд░рдиреЗ рдХреЗ рдЗрдЪреНрдЫреБрдХ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореИрдВ рдпрд╣ рднреА рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рджреБрдирд┐рдпрд╛ рдореЗрдВ рдХреМрди рдЬреНрдпрд╛рджрд╛ рдордЬрдмреВрдд рд╣реИред рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдХреИрдорд░рд╛ рдирд┐рд░реНрдгрдп рд▓реЗрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рдмрд┐рдирд╛ рдпрд╣ рдЕрдзрд┐рдХ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИред рдпрд╣ рд╕рдЪ рд╣реИ!
async
Windows Phone 7 рдореЗрдВ async рдкреНрд░рддреАрдХреНрд╖рд╛ рдХреЗ рд▓рд┐рдП рдореВрд▓ рд╕рдорд░реНрдерди рдирд╣реАрдВ рд╣реИред рд╡рд┐рдХрд╛рд╕ рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдирд┐рдпрдВрддреНрд░рдг рдирд╣реАрдВ рд╣реИрдВред рдпрд╣рд╛рдБ nuget рд╕реЗ рдкреНрд░рдпреБрдХреНрдд рд╕рдВрдХреБрд▓ рдХреА рдореЗрд░реА рд╕реВрдЪреА рд╣реИред
рд╕рдВрдХреБрд▓ рд╕реВрдЪреА
<packages> <package id="Coding4Fun.Toolkit.Controls" version="2.0.7" targetFramework="wp71" /> <package id="GoogleAnalyticsSDK" version="1.2.01" targetFramework="wp71" /> <package id="Microsoft.Bcl" version="1.1.7" targetFramework="wp71" /> <package id="Microsoft.Bcl.Async" version="1.0.16" targetFramework="wp71" /> <package id="Microsoft.Bcl.Build" version="1.0.14" targetFramework="wp71" /> <package id="Microsoft.Net.Http" version="2.1.10" targetFramework="wp71" /> <package id="Newtonsoft.Json" version="5.0.7" targetFramework="wp71" /> <package id="WPtoolkit" version="4.2013.08.16" targetFramework="wp71" /> </packages>
рдПрдкреАрдЖрдИ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рд╡рд░реНрдЧ (httpclient) рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдЬреЛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕реЗ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рднрдЯрдХрддрд╛ рд╣реИред рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╡рд░реНрдЧ рдХреЛрдб рдиреАрдЪреЗ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
Http рдХреНрд▓рд╛рдЗрдВрдЯ (async рдЗрдВрддрдЬрд╛рд░)
using (HttpClientHandler handler = new HttpClientHandler()) { using (HttpClient httpClient = new HttpClient(handler)) { using (HttpRequestMessage message = new HttpRequestMessage()) { message.RequestUri = new Uri(url); message.Method = postData == null ? HttpMethod.Get : HttpMethod.Post; if (postData != null) { message.Content = new StringContent(JsonConvert.SerializeObject(postData)); message.Content.Headers.ContentType = MediaTypeHeaderValue.Parse("application/json; charset=utf-8"); } HttpResponseMessage response = await httpClient.SendAsync(message).ConfigureAwait(false); string data = await response.Content.ReadAsStringAsync(); return data; } } }
Canvas
рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдбреНрд░реЙрдЗрдВрдЧ рдкреЙрдЗрдВрдЯ рд▓рдЧрддреЗ рд╣реИрдВред рдкреНрд░рддреНрдпреЗрдХ рдмрд┐рдВрджреБ рдПрдХ рд╢реИрд▓реА рдХреЗ рд╕рд╛рде рдПрдХ
Button
рд╣реИред рдбреЙрдЯреНрд╕ рдФрд░ рд░рдВрдЧреЛрдВ рдХреА рдкреАрдврд╝реА рдмрд┐рд▓реНрдХреБрд▓ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╣реИ (рдХрднреА-рдХрднреА рдПрдХ рд╣реА рд░рдВрдЧ рдХреЗ 4-5 рдбреЙрдЯреНрд╕ рдмрд╣реБрдд рдХрд░реАрдм рдЖрддреЗ рд╣реИрдВ, рдЖрдкрдХреЛ рдПрдХ-рджреВрд╕рд░реЗ рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рдкрджреЛрдВ рд╕реЗ рдиреЗрд╡рд┐рдЧреЗрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдкреАрдврд╝реА рдХреЛрдб рдиреАрдЪреЗ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдбреЙрдЯреНрд╕ рдХреЗ рдЪреМрд░рд╛рд╣реЛрдВ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИред рдкреАрдврд╝реА рддрдм рддрдХ рд╣реЛрддреА рд╣реИ рдЬрдм рддрдХ рдХрд┐ рдРрд╕рд╛ рд╕реНрдерд╛рдиреАрдп рдирд╣реАрдВ рд╣реЛрддрд╛ред рдЬрд╣рд╛рдВ рдЕрдиреНрдп рдмрд┐рдВрджреБрдУрдВ рдХреЗ рд╕рд╛рде рдХреЛрдИ рдЪреМрд░рд╛рд╣рд╛ рдирд╣реАрдВ рд╣реЛрдЧрд╛ (рдпрд╛ рдЪрдХреНрд░ рд╕рдорд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдПрдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕реНрдерд╛рди рдкрд░ рд╣реЛрдЧрд╛)
рдмрд┐рдВрджреБ рдкреАрдврд╝реА
DotInfo dot = new DotInfo(); dot.Color = Colors[Rand.Next(Colors.Count)]; int testX = 0, testY = 0; bool testOk = true; for (int i = 0; i < 10000; i++) { testX = Rand.Next(Width - ButtonSize); testY = Rand.Next(Heigth - ButtonSize); testOk = true; foreach (DotInfo dotInfo in _dots) { Rectangle intersect = Rectangle.Intersect(new Rectangle(dotInfo.X, dotInfo.Y, ButtonSize, ButtonSize), new Rectangle(testX, testY, ButtonSize, ButtonSize)); if (intersect != Rectangle.Empty) testOk = false; } if (testOk) { dot.X = testX; dot.Y = testY; break; } } if (!testOk) { dot.X = Rand.Next(Width - ButtonSize); dot.Y = Rand.Next(Heigth - ButtonSize); }
рдкреНрд░рдХрд╛рд╢рдХ Coding4Fun рд╕реЗ рдирд┐рдпрдВрддреНрд░рдг рджреНрд╡рд╛рд░рд╛ рдЦрд┐рд▓рд╛рдбрд╝реА рдХреЗ рдирд╛рдо рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╡реИрд╕реЗ, рдмрд╣реБрдд рджрд┐рд▓рдЪрд╕реНрдк рдирд┐рдпрдВрддреНрд░рдг, рдореИрдВ рдЖрдкрдХреЛ рджреЗрдЦрдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВред ( Coding4Fun рдЯреВрд▓рдХрд┐рдЯ )
рдЗрдирдкреБрдЯ рд╕рдВрд╡рд╛рдж
InputPrompt input = new InputPrompt(); input.Completed += UserNameInputOK; input.Title = " "; input.Value = UserSettings.Value.UserName; if (string.IsNullOrEmpty(input.Value)) input.Value = " " + randName.Next(Int32.MaxValue / 2); input.Show();
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдФрд░ рд╕рдВрдЧреНрд░рд╣реАрдд рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдЗрдВрдЯрд░реИрдХреНрд╢рди рдиреЛрдХрд┐рдпрд╛ рд╕реЗ рд╕рд┐рдлрд╛рд░рд┐рд╢ "рдкрд░рд┐рдЪрдп рдФрд░ IsolatedStorageSettings рдХреЗ рд▓рд┐рдП рд╕рд░реНрд╡реЛрддреНрддрдо рдкреНрд░рдерд╛рдУрдВ" рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╕рдорд╛рдзрд╛рди рджрд┐рд▓рдЪрд╕реНрдк рдФрд░ рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдерд╛ред http://developer.nokia.com/community/wiki/Introduction_and_best_practices_for_IsolatedStorageSettings
рдЕрджреНрдпрддрди рд╕реНрдЯреЛрд░ рдореЗрдВ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░реЗрдВ
рдмрд┐рд▓реНрдб рдХреЙрдиреНрдлреНрд░реЗрдВрд╕ рдХреЗ рддреБрд░рдВрдд рдмрд╛рдж, рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реНрдЯреЛрд░ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ (рдХреНрд▓рд╛рдЗрдВрдЯ рдХреА рддрд░рдл рдФрд░ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рджреЛрдиреЛрдВ)

рдирдП рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдЖрдЗрдЯрдо рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рдерд╛ (рдЗрд╕рд▓рд┐рдП рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╡рд┐рд╡рд░рдг рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ) рдФрд░ рдЗрд╕реЗ рдЕрд╡реНрдпрд╡рд╕реНрдерд┐рдд рди рдХрд░реЗрдВред

рд╡рд┐рдВрдбреЛрдЬ рдлреЛрди рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЖрд╡реЗрджрди рдХрд╛ рдирд╛рдо рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ (рд╡рд┐рдВрдбреЛрдЬ рд╕реНрдЯреЛрд░ рдореЗрдВ рдЙрдкрд╛рдВрдЧ рдореЗрдВ)

рджреЛрдиреЛрдВ рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╣реА рдирд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдПрдХ рдЖрдЗрдХрди рд╣реИ:

рдХреБрд▓ рдорд┐рд▓рд╛рдХрд░, рдЗрд╕ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рд▓рд┐рдЦрдиреЗ рдореЗрдВ + рдПрдХ рдЫреЛрдЯрд╛ рд╕рд░реНрд╡рд░ рдкрдХреНрд╖ 20 рдШрдВрдЯреЗ рд▓рдЧ рдЧрдПред рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рд╕реНрдЯреЛрд░ рдореЗрдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рдкреНрд░рдХрд╛рд╢рди рдЕрдВрддрд░рд┐рдХреНрд╖-рддреЗрдЬрд╝ (рдХреЗрд╡рд▓ 30 рдорд┐рдирдЯ) рд╣реЛ рдЧрдпрд╛ рд╣реИред Windows Phone 7.5 рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдореЗрдВ async-wait рдХреЛ рдПрдХреАрдХреГрдд рдХрд░рддреЗ рд╕рдордп рдЕрддрд┐рд░рд┐рдХреНрдд рддреНрд░реБрдЯрд┐рдпрд╛рдБ рдкреНрд░рд╛рдкреНрдд рд╣реБрдИ рдереАрдВред рдПрдХ рдЕрдЬреАрдм FileNotFound рддреНрд░реБрдЯрд┐ рд╣реБрдИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рд╛рд▓ рд╣реА рдореЗрдВ Microsoft BCL рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рдЕрджреНрдпрддрди рдХреЛ рд╣рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
PS рдореЗрд░рд╛ рд░рд┐рдХреЙрд░реНрдб 24 рдЕрдВрдХ рдХрд╛ рд╣реИ, рдФрд░ рдЖрдк? (рдЖрдк Habr рдореЗрдВ рдирд╛рдо рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдкрддрд╛ рд▓рдЧрд╛рдпрд╛ рдЬрд╛ рд╕рдХреЗ рдХрд┐ Habr рдореЗрдВ рдХреМрди рдмреЗрд╣рддрд░ рд╕реНрдореГрддрд┐ рд░рдЦрддрд╛ рд╣реИ)

рдореБрдЭреЗ рд╕реНрдЯреЛрд░ рдореЗрдВ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ, рд╕реБрдЭрд╛рд╡реЛрдВ рдФрд░ рдЕрдЪреНрдЫреА рд░реЗрдЯрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЦреБрд╢реА рд╣реЛрдЧреАред
