Windows Phone 7 ile 31 Gün

Bir süre önce sizler için yararlı olacağını düşündüğümüz mobil programlama türü olan Jeff Blankenburg’ın hazırladığı Windows Phone ile 31 Gün adlı projenin çevirisine başlamıştık. Projeyi çevirileri ile bize kazandıran Haberci Grup ve Haberci Destek Tim’deki arkadaşlarıma çok teşekkür ederim. Makalelerde Windows Phone hakkında herşey her ne kadar baştan ve detaylı bir şekilde işlense de daha önce mobile programlama ile ilgilenmedi iseniz dahası az da olsa silverlight bilgisine sahip değilseniz, makaleleri anlamakta biraz zorlanabilirsiniz. Tavsiyem, yeterli bilgi düzeyine sahip değilseniz, çok yakında başlatacağımız bir diğer projemiz olan "Her Güne Bir Silverlight" adlı makaleleri incelemeniz olacaktır. Windows Phone ile 31 Gün yazı dizimizin içeriği aşağıda yer almaktadır. Proje 31 gün boyunca günlük partlar halinde bu konun devamı olarak yayınlanacaktır. En iyi şekilde faydalanmanızı temenni ederiz. 1.Gün: Proje Şablonu 2.Gün: Sayfa Navigasyonu 3.Gün: Geri Tuşu 4.Gün: Cihaz Uyumluluğu 5.Gün: Sistem Temaları 6.Gün: Uygulama Çubuğu 7.Gün: Launcher Kullanımı 8.Gün: Chooser Kullanımı 9.Gün: Hata Ayıklamanın Püf Noktaları 10.Gün: Ekran Klavyesinden Bilgi Girme 11.Gün: Accelerometer Kullanımı 12.Gün: Titreşim Kontrolleri 13.Gün: Lokasyon Servisleri 14.Gün: Tombstoning 15.Gün: Isolated Storage Kullanımı 16.Gün: Geniş Görünüm Kontrolü 17.Gün: Pivot Kontrolü 18.Gün: WebBrowser Kontrolü 19.Gün: Bildirimleri Kullanma 20.Gün: Map Kontrolü 21.Gün: Silverlight Kontrolleri 22.Gün: Oyun ve Uygulamalar 23.Gün: Uygulama Deneme Sürümlerinin Sağlanması 24.Gün: Fontları Gömme 25.Gün: Harici API’ler 26.Gün: Uygulamanızı Diğer Geliştiricilerle Paylaşın 27.Gün: Windows Phone’da Marketplace Uygulaması 28.Gün: Reklam Yazılım Kiti 29.Gün: Animasyonlar 30.Gün: Hareketler 31.Gün: Grafiksel Kontroller

1.Gün: Proje Şablonu Windows Phone ile 31 Gün projesinin ilk mesajında bazı beklentileri belirtmem gerekir. İlk olarak Silverlight hakkkında az çok bir şeyler bildiğinizi varsayıyorum. Bunun için Silverlight ile 31 Gün adlı makalelerimizi inceleyebilirsiniz. Daha önce Silverlight kullanmadıysanız o projeden başlamanızı tavsiye ederim. Bu serideki bütün makaleler temel Silverlight bilgisi gerektirecek. İkinci olarak gerekli bütün araçları yüklediğinizi varsayıyorum. Bu araçları developer.windowsphone.com adresinden indirebilirsiniz. Windows Phone için Visual Studio 2010 ve Expression Blend 4 programlarını indireceksiniz. Bu iki programa kesinlikle ihtiyacınız olacak ve iki programda ücretsiz. Eğer bu yazılımların resmi versiyonu bilgisayarınızda zaten yüklüyse, programları yüklemek yerine sadece proje şablonlarını güncelleyecek. Şimdi başlayabiliriz! Bugün proje boyunca çoğunlukla kullanacağımız, Windows Phone için varsayılan şablon olan “Visual Studio 2010: Windows Phone Application”ı inceleyeceğiz.

Solution Explorer Aşağıda varsayılan bir proje için “Solution Explorer” görüntüsü var. Buradaki herbir dosyanın içeriğini anlatmayacağım sadece amaçlarını yazacağım. Eğer içeriği görmek istiyorsanız makalenin başında verdiğim adresteki araçları indirin. İndirmesi gerçekten çok kolay. (Eğer indirebileceğinizi düşünmüyorsanız makalenin sonuna indirilebilir bir proje ekleyeceğim.)

AplicationIcon.png Telefonda yaptığın uygulamayı temsil eden resim, istediğin bir resim ile değiştirebilirsin. Bu kullanıcıların telefonlarında uygulamana baktığı zaman görecekleri resimdir. Mantıklı bir resim seçmenizi öneririm. App.xaml Bu daha çok ASP.NET’teki web.config dosyasına benziyor. Genel verileri ve bütün uygulamanın ayarlarının saklandığı yer. Ben ayrıca still verilerini de bu dosyada saklamayı tercih ediyorum fakat bu gerekli değil. App.xaml.cs Bir önceki dosyanın arkasındaki kodlar, uygulamanızdaki istenmeyen durumları kontrol edeceğiniz yer. Çoklu görevleri ve istenmeyen durumları serimizin 14. gününde işleyeceğiz. AppManifest.xml Uygulama paketini oluşturmak için gerekli basit bir uygulama.(XAP) AssemblyInfo.cs

İsim ve versiyon metadatalarını içeren oluşturulmuş assembly dosyasına gömülü başka bir yapısal düzenleme. Background.png Uygulamanız Başlat menüsüne iğnelendiğinde kullanılacak resim. ApplicationIcon.png’de kullandığınız resim ile benzer olması akllıca bir davranış olur. MainPage.xaml Uygulamanızın açılış sayfası. Nerdeyse her dosyada bu tek sayfanız olmamalıdır. Telefon ileri ve geri navigasyonu çok güzel yönetiyor yani uygulamanın işlevselliğini tek bir xaml dosyasına gömmemelisiniz. Uyarı için bana daha sonra teşekkür edeceksiniz. Serinin 2. gününde sayfa navigasyonunu daha ayrıntılı inceleyeğiz. MainPage.xaml.cs MainPage.xaml dosyasının arkasındaki kodlar. Bazı şeyleri kodlar ile yapman gerektiğinde genellikle buraya yazacaksın. XAML’de objeleri birbirleri ile etkileşim içine sokmak nerdeyse her zaman gerekliliktir. Bu yazı serisi boyunca bu dosyalarda kod yazmayı gerektiren (ve başka xaml arka kodlarında) çok güzel başlıklar inceleyeceğiz. SplashScreenImage.jpg Eğer uygulamanızın açılması zaman alırsa, ekranda görünecek olan resim. Bunu kendi tercih ettiğiniz bir resim ile değiştirebilirsiniz fakat unutmayın ki bu kullanıcıya gerçek bir uygulamanın yüklendiğini gösterecek bir resim olmalı. WMAppManifest.xml Uygulamanızın özel verilerini tutan başka bir metadata alanı. Başlık, ikon adresleri, yeterlilikleri vs. Örnek Kod Haberci Grup adına çevirisi @em tarafından hazırlanmıştır.

2.Gün: Sayfa Navigasyonu Bugün, Windows Phone için Silverlight’ta sayfalar arasında nasıl gezineceğinizi konuşacağız. Bu ders, iki nedenle önemli. Birincisi, XAML dosyasında tüm uygulamayı kurmak istememeniz diğeri iste, kuralları takip ederek uygulamanızın, telefonun geri tuşundaki kaldıracın uygulanmasıdır. Bu önceden yaptığı şeyi geri getirmek istediğinizde kullanıcılara geride kalanları gezinme imkanı sağlayacaktır. Bir sonraki derste Geri tuşu hakkında daha fazla konuşacağız. Sayfalar arasında gezinti yapmanın birçok yolu var fakat ben birine odaklanacağım. Bunu Basit Web Keşfine atıfta bulunarak yapacağım. HTML sayfalarında yaptığımız gibi aynı yolla gezinti yapacağız. Basit Web Navigasyonu

Çoklu sayfaya sahibimiz ve kullanıcılara bunlar arasında yol bulmayı istiyoruz. O zaman bunu yapmamız için gerekli olan basit navigasyonu oluşturalım. Baştan başlayalım. 1) Yeni Bir Windows Phone Uygulaması Oluştur 2) Yeni Windows Phone Resim Sayfası Ekle 4.dersimizde sayfa uyumu hakkında daha fazla konuşacağız. Fakat şu an için sadece portre sayfalarını yapıştıralım. 3 yeni sayfa oluşturdum. Pasta.xaml, Sauce.xaml ve Cheese.xaml. Bunları çeşitli yolları kullanarak birbirine bağlayacağız. 3) Her Sayfanın başlığını değiştirin ki biz de o sayfaya ne zaman geldiğimizi bilelim. Oluşturduğunuz her bir yeni sayfa, XAML ile sayfa adı altında kurulmuştur. Hangi sayfada çalıştığının kesin olması için her sayfada bunu değiştirin. Bunu seviyorum çünkü hata yapmaya daha az eğilimli oluyor. Bunu koda aynı bakmaya başladığınız özenilmiş bir projeye ayrılmış gibi bulabilirsiniz. Kodlarken farklı açılardan bakarsanız uzun bir yola gidebilirsiniz. 4) MainPage.xaml de birkaç üst-bağ oluştur.

Sayfalar arasında bağ oluşturmak için birçok farklı seçeneğimiz mevcut. İlki tüm XAML çözümü, bunu yaparken Hyperlink Buton Kontrolünü kullanacağız. Kod Aşağıdadır. Projenizi yürüteceğinizde herhangi bir Hyperlink butonuna basmalı ve özel sayfada son buldurmalısınız. Geri tuşunu kullanmak ayrıca önceki ekrana dönmeyi sağlar. Eğer yeterli biçimde geri tuşunda gezinirseniz aynı zamanda uygulamanızın ilk ekranından ayrıldığınızı da bulacaksınız. 5) Kodlar aracılığıyla sayfada gezinmek. Eğer XAML yerine kodlarla yapmayı tercih ederseniz, bunu yapmak için sadece herhangi bir XAML ögesini kullanırsınız. Bu örnek için sadece buton kullanacağız. 3 tane buton oluşturdum her biri aynı işleyiciye yöneliyor. C#’da hangi butonun tıklandığını ve kullanıcıların uygun sayfalarda gezindiğini tespit ediyordum. Tüm Geri butonu fonksiyonları mevcuttur. XAML

C#

Gördüğünüz gibi navigasyon hizmetini kullanarak gezinme yaparak tüm kullanıcıların hareketlerini kayıt altına aldık ve geri tuşunu kullanmak kararından geri dönmesini sağladı. Haberci Grup adına çevirisi Orhanbey tarafından yapılmıştır.

3.Gün: Geri Tuşu Dün, Sayfa Rehberi hakkında ve Rehber Servisini nasıl basit şekilde başka bir sayfaya alabileceğimiz hakkında konuşmuştuk. Geri tuşundan basitçe bahsedilmiştik fakat Geri tuşunun karmaşıklığı bu yazı dizisindeki mesajları hak ediyor. öncelikle siz Geri tuşunun yaptığını geçersiz kılabilirsiniz. Geri Tuşu Nasıl Çalışır Kendi browser’ınızdaki Geri tuşunu düşünün. Gemişte açtığınız oturumlara geri dönmek için tıklayabiliyorsunuz. Bir çok sitede ve bu siteler içindeki sizin gezindiğiniz diğer sayfalar arasında geçiş yapmanızı sağlar. Window Phone’daki Geri tuşuda aynı yolla çalışır. Size gezindiğiniz sayfalar arasında hatta ugulamalar arasında geçiş yapma olanağı sağlar. Örneğin; 1.Kişi listenisini açın. 2.Listeden "Haberci"i seçin. 3.Onun ana sayfasına gidin. 4.Başla tuşuna basın. 5.Bir oyuna başlayın. Geri tuşuna bastığımız zaman, olay listesinin olduğu sayfaya yönlendirileceğiz.

Geri Tuşunu Geçersiz Kılmak Evet doğru duydunuz. Geri tuşunu sizin istediğinizi yapmak üzere geçersizleştirebilirsiniz. Bu size yine de mesuliyetsiz olma yetkisi VERMEZ. Nerede istiyorsanız her hangi bir şekilde Geri tuşunu geçersiz kılabilirsiniz. Kullanıcının geri tuşunu hesaba kattığından emin olmalısınız. Örneğin, otomatik açılır tarzında bir kutu çalıştırırsanız, kullanıcının güç hafızası Geri tuşu yok saymasını geçerli kılacaktır. Bu örnekte, kasıt uygulamadan ayrılmak değildir, yani onun yerine Geri tuşunun otomatik açılır kutudan çıkmasıdır. Başka bir örnek; eğer canlı bir olaya da kronometreye dayanan bir oyununuz varsa, Geri tuşu birden bire oyundan çıkmak yerine oyunu duraklatmak uygun olabilir. Uyduğunuz taktirde size yardımcı olabilecek bir kaç örnek var. 1.Geri tuşunun kullanıcıda o anda ne anlama geldiğini göz önüne almalısınız. 2.Eğer kullanıcı Geri tuşuna ikinci sefer basarsa, varsayılanın olmasına izin vermelisiniz. 3.Bir oyunu duraklatmak için Geri tuşunu kullanmak tam anlamıyla uygundur, fakat ikinci basışın aslında geriye gitmek demektir. Bu, Windows Phone 7’deki Geri tuşunun geçersiz kılınması için gereken kod.

Yarın cihaz uyumluluğunu yönetmeyi ve uygulamalarımızda Portrait’e karşı Landscape’i tutmayı göreceğiz.

Haberci Grup adına çevirisi urkera tarafından yapılmıştır.

4.Gün: Cihaz Uyumluluğu Dün Windows Phone’da özel donanım tuşlarından biri olan Geri tuşu hakkında konuşmuştuk. Bugün, donanıma başka bir bakış olan Cihaz uyumluluğuna odaklanacağız. Portrait’e Karşı Landscape Terimin belli olmamasına karşın, Portrait cihazın dikey uyumudur ve Landscape ise yatay uyumdur. Her ikisi de her Windows Phone 7’de kullanılabilirdir. Ama varsayılan olarak Portrait’te Silverlight uygulamaları, Landscape’de ise XNA uygulamaları başlatılır. (Oyunlar genellikle geniş ekranlarda daha iyi çalışır.) Bu konumuzda Silverlight uygulamarına ve kullanıcıların bizim uygulamalarımızı kullanıcıların kullandığında ister istemez oluşan uyumluluk değişikliliğinde nasıl çalışacağımıza odaklanacağız.

Varsayılan Projeniz "Sadece Portrait" Olacak Eğer MainPage.xaml dosyanızın başlığına göz atacak olursanız, iki ayar göreceksiniz: SupportedOrientations="Portrait" Orientation="Portrait" Desteklenen Uyumlulukları uygulamalarınızda gönüllü olarak destekleyeceğiniz olasılıklar listesi olarak düşünün. Kendi Desteklenen Uyumluluklarınızı şu üç değerden birine ayarlayabilirsiniz: 1.Portrait (varsayılan) 2.Landscape 3.PortraitOrLandscape Uyumluluk değeri, uygulamanızın başlayınca sizin istediğinizi yapmasıdır. (Uygulamanızın) Daha geniş bir listesi var, fakat unutmayın ki (uygulmanız) Landscape modunda başlar, yani Desteklenen Uyumluluklarınızda Landscape’i de bir seçenek olarak bulundurmak zorundasınız. Sizin başlangıç uyumluluğu listeniz burada: 1.Landscape 2.LandscapeLeft(telefonun sola eğilmesi) 3.LandscapeRight(telefonun sağa eğilmesi) 4.Portrait 5.PortraitDown (normal dikey pozisyon) 6.PortraitUp (telefonun baş aşağı eğilmesi) Yukarıdaki listede uygulamanızı sadece Landscape ya da Portrait’le başlatıp başlatmamayı belirlemenizi değil aynı zamanda hangi hizaya göre uygulayacağınızı da belirleyebileceğinizi görebilirsiniz. Bu size uygulamanızı sizin tercih ettiğiniz ekranda başlatmanıza izin verir. Uyumluluğunuzu Değiştirmek Uyumluluğunuzu değiştirmenizin iki yolu var. Birincisi Desteklenen Uyumlulukları "PortraitOrLandscape" olarak ayarlamak ve işletim sisteminizin kendisinin seçmesini sağlamaktır. Çoğu durumda bu tavsiye edilmez, genellikle uygulamalarınız ekranı tam anlamıyla kaplayamaz. İkinci yolu ise kod yoluyladır. Size göstereceğimiz bir örneğimiz var.

Bu uygulamada Landscape uyumluluğunda olduğumuzu görebilirsiniz, tuşlarımızın çoğu ekranın dışında kaldı. Bu tam anlamıyla uygunsuz bir kullanıcı deneyimi. Bunu engellemenin en kolay yolu sadece başlığı kaldırmak. Landscape modundayken başlık kısmını kaldırmakla kullanıcımızın bunun bir hesapmakinesi olduğunu anlayacağından eminim. Tabi ki tuşlarımızı tekrardan boyutlandırmamız, uygulamamızın daha anlamlı yapacaktır. Bu konunun amacı size uygulama ayarlarınızı NASIL değiştireceğinizi göstermektir, NEYİ değiştirmeniz gerektiğiniz dikte etmek değil. Bu benim başlık kısmını görünmez ve tekrar görünür yapmak için kullandığım kod (bu benim MainPage.xaml.cs’min tüm içeriği).

Çünkü sadece uygulamalarımın Landscape ya da Portrait olmasını (ve daha özel uyumluluk olmamasını), her iki durumu da kontrol etmeyi umursuyorum ve bu nedenle arayüzlerimi ayarlıyorum. Kesinlikle bireysel durumları ayırt etmelilisiniz, ve arayüzleriniz her durum için ayrı görünmelidir. Uyumluluk değişimi olayını oluşturduğumu fark edeceksinizdir. Bu olduğu zaman teşhis etmenin kesinlikle en kolay yolu. Ama siz her zaman, eğer tercih ettiyseniz, Accelerometer kullanmalısınız. 11.günde Accelerometer’i daha iyi kavrayacağız. Bu da yeni kodlarımızdan sonra örneğimizin görünümü:

Bu çalışan bir hesap makinesi değil, fakat çalışmaya başlamak için iyi bir proje olabilir. Projeyi indirmekte ve eksik fonksiyonları eklemekte özgürsünüz.

Haberci Grup adına çevirisi urkera tarafından yapılmıştır.

5.Gün: Sistem Temaları Kullanıcılar cihazların oryantasyonunu değiştirdiklerinde nasıl yerleştirebilecekleri hakkında konuşmuştuk. Bugün ise, kullanıcılarımızın telefonlarında ki tema ve renk ayarlarını nasıl değiştirebileceklerine odaklanacağız. Koyu ve Açık Temalar Henüz bunu görmediyseniz, telefonunu koyu temadan açık temaya dönüştürme özelliğine sahip olacaksınız ve üstelik vurgu rengini de ayarlayabileceksiniz. Burada aynı uygulamada ki 2 temanın görünümü var.

Vurgu Renkleri Kullanıcları sistem boyunca sadece bu rekleri ayarlayabilirler. İşletim sistemi size 10 adet seçebileceğiniz renk seçenekleri sunmaktadır. Bu renkler telefonun başlama ekranında kullanılır. Aşağıya bakarsanız renklerin bir listesini göreceksiniz.

Varsayılan Değerleri Düşünelim Bir uygulama oluşturduğunuzda, bir şeylerin renkleri değiştirmek istediğinizde zamanınız olacaktır. Bunu kendinizin yapmasını şiddetle öneririm. Fakat yaptığınız her değişiklik sizi başka değişikler yapmaya zorlayacaktır. Beyaz arkaplan üzerine koyu renk yazı ya da tam tersi olmamasını size önermiyorum. Eğer beyaz renk arkaplan kullanacaksanız. Telefona ekleyeceğiniz açık renkli temaların nasıl görüneceğini düşünmelisiniz. (büyük bir olasılıkla görünür olmalıdır.) Sizi memnun edecek derece bunu kontrol etmenin bir yolu var. O da Expression Blend 4. Expressin Blend 4 Araç Çubuğu İlk olarak projenizi Expression Blend 4 ile açın. Bunun en kolay yolu projenin üzerinde sağ tık ve "open expression blend" seçmek olacaktır.

Bunu ilk defa expression blend programı ile açıyorsanız, şöyle bir menü göreceksiniz.”device” aşağıdaki gibi...

Bu sekme ile sağ tarafta gördüğünüz zemin ayarlarının önizlemesini gösteren bölümde yaptığınız değişiklerin önizlemesini görecebileceksiniz. Kendi uygulamanızı başlattığınızda fazlasıyla bunun önemli olduğunu göreceksiniz. Örnek olarak Kullanıcıların seçtiği renklerin aktif olmasını sağlamak isteyebilirim. Bunu yapın. Daha sonra size Expression

Blend 4’ün başka harika bir özelliği olan "color resources" sekemesini kullanmayı göstereceğim. Color Resources Windows Phone 7 varsayılan renk seçenekleri olarak bir çok renge sahiptir. Aşağıda ki resimlerde, device sekmesinden daha önce seçtiğim accent color ve PhoneBackground color ile PhoneAccentColor özelliklerini görebilirsiniz. Birincisi koyu/mavi diğeri ise açık/turuncu seçilmiş halleri.

Uygulamanız için seçtiğiniz bu renkler, kullancılar fikirlerini aniden değiştirdiklerinde değişiklikler hemen uygulamaya yansır. Aşağıdaki kod örneğinde, PhoneBackgroundColor’dan PhoneAccentColor’a eğimli renk geçişi ile uygulamama bir diktörtgen şeklinde bir tema eklediğimi göreceksiniz. PhoneAccentColor ayarlamak için bir uygulama başlığını da eklemiş olduk.

Yukarda verdiğimiz kod örneği ile uygulamamızın nasıl göründüğüne dair 2 örnek resim var. (bu ekran görüntülerinden renklerin ve temaların farkını görebilirsiniz.)

Haberci Grup adına çevirisi cihanx tarafından yapılmıştır.

6.Gün: Uygulama Çubuğu Dün, Sistem temasını tartıştık, Expression Blend kullanarak mouse’la tıklamayla birlikte sistem değerlerini birleştirmeyi anlattık. Bugün, Expression Blend’in daha kolay hale getireceği başka bi konu üzerinde duracağız:

Uygulama Çubuğu Windows Phone 7’de uygulama çubuğu, uygulamamnın en üstüneki daireye alınmış ikon setidir. Burada TapScoth oyunumdan uygulama çubuğu örneği var. Örnekte kullanıcıların etkileşim içinde olmaları için kullandığım 4 yaygın ikon görüyorsunuz. Bunlar Oyna, En iyi Zaman, Puan ve Yardım. Bu simgelerden herhangi birisine dokunmak uygulamanın belirli sayfasına götürecektir. Peki bunun çalışmasını nasıl sağlarız? Uygulama Çubuğu Eklemek

Eğer yeni bir projeye başladıysanız, kendi MaingPage.xaml file’ın içinde örnek kodlar bulunur. Eğer silerseniz, buna tekrar ihtiyacınız olur. Aşağıda uygulama çubuğu kodlarının nasıl göründüğünü görüyorsunuz.

Sitenizin sayfa başlığı için gerekli olan XML Namespaces’i de silerseniz, aşağıda onlar için kodları göreceksiniz.

Uygulamanıza, bu çubuğu eklediğinizde uygulamalarını 72 pikselde uyumlu hale getirmek için Visual Studio’nun bunun için ne kadar akıllı olduğunu da fark edeceksiniz. Bu uygulama çubuğunun ne kadar büyük olduğunu gösterir. Şimdi de SystemTray konusunu işlemek için iyi bir zaman. The Windows Phone SystemTray Uygulamanızı çalıştırırken saati, Wifi sinyal gücünü, şarj uzunluğunu görüyorsunuz. Varsayılan olarak SystemTray açık olduğundandır. Eğer bu bilginin açık olduğuna dikkat etmezsesiz, onun görünür niteliklerini kurmalısınız. shell:SystemTray.IsVisible="False"

Uygulama Çubuğuna Simgeleri Eklemek Eğer Uygulama çubuğu için kod arıyorsunuz, projenizin parçası olan 2 resime dikkat çekeceksiniz. Uygulamanızı çalıştırırken, her uygulama butonu için X ikonu gösterdiğini göreceksiniz. Biz bu butonlar için kolayca bazı resimler oluşturacağız, projemize ekleyeceğiz ve kod satırına referans göstereceğiz. Tabi ki daha kolay olan diğer yollar var. Bunu tekrardan Expression Blend olarak adlandırabiliriz. Uygulamanızı Expression Blend’de açın ve “Nesneler ve Zaman Çizelgesi” ‘nde gezintiye çıkın.

Bu butonlardan birine tıkladığınızda, özellik sekmesini kontrol edin. Her birinde metin ve resim ekleme için kolay yol göreceksiniz. Bu yol aşağıdadır.

Eğer; IconUri seçme kutusunu açarsanız, uygulamanızda kullanacağınız standart ikonlar göreceksiniz. Bu ikonlar ihtiyaçlarınıza hizmet eder ve birini seçerek projenize ikonların beyaz versiyonunu eklersiniz. Aşağıda ikonların listesini göreceksiniz.

Neden Sadece Beyaz İkonlar? Windows Phone takımı işinizi oldukça kolaylaştırıyor. Sadece ikonların bir versiyonunu oluşturmaya ihtiyaç var ve bu diğerlerini gözetmek için yeterli. Bu yüzden, ne zaman beyaz ikon verseniz, bu karanlık temada kullanır ve otomatik olarak siyaha dönüşür.

Listeden bir ikon seçin ve proje kurgusuna bakın. Projenizde sadece bir resim var. İhtiyacınız olduğunda çalışma sistemi otomatik olarak beyaz ikonu siyaha çevirir. Butonları çalışır hale getirmek Uygulamanızda yeterince butona sahipsiniz ama bu butonlara tıkladığınızda hiçbir şey yapmıyor. Bu noktada onların Klik olayına ve kod arkasında bir işleyiciye ihtiyaç var. Bu basit uygulama için C# ve XAML örnekleri görüyorsunuz. XAML

C#

Diğer Metin tabanlı Menü Ögeleri Bir diğer güzel soru, eğer uygulamanızı hala çalıştırmadıysanız elips ikona tıkladığınızda uygulama çubuğu diğer menü seçeneklerini gizlemek için kaydığını göreceksiniz. Eğer varsayılan kod kullanırsanız, hala menü öğe 1 ve menü öğe 2 diyecektir. O ikon butonları gibi çalışır.

Örnek Kod Haberci Grup adına çevirisi Orhanbey tarafından yapılmıştır.

7.Gün: Launcher Kullanımı Dünkü yazımızda Windows Phone uygulamasındaki uyguluma çubuğunu nasıl kontrol edebileceğimizden bahsettik. Bugün ise uygulamalarınız için fonksiyonel olan temel parçalardan bir diğeri olan Launcher’lardan bahsedeceğiz. Nedir bu Launcher? Kelime anlamı "fırlatıcı" demektir. Kendi tabirimle “Ateş et ve unut” şeklinde nitelendiririm. Onları kullanarak e-posta yollayabilir, haritalara bakabilir, resim çekebilir ve dahasını yapabilirsiniz. Bulunduğumuz bu ortamda siz geliştiriciler için uygun olan her bir Launcher’ı inceleyeceğiz. Yazının sonunda burada tanıtımı yapılan Launchers hakkındaki proje ile ilgili kod örneklerini inceleyebileceğiniz bir link verildi.

Emülatör içerisindeki bazı başlatıcıların düz bir şekilde çalışmayacağı hatırlanmalı. Örneğin EmailComposeTask, aygıt içerisindeki e-mail hesap ayarınızın yapıldığını varsayar. Çünkü emülatör e-mail hesapları oluşturmanızı önler. Her launcher için kod dosyasının başında aşağıdaki kodun bulunup bulunmadığından emin olmanız gerekir. Microsoft.Phone.Tasks referasansına ihtiyacımız var. using Microsoft.Phone.Tasks; Şimdi launcher’lara ufak bir göz gezdirelim; • EmailComposeTask – Kullanıcıların e-posta hesaplarını kullanarak diğer kullanıcılara e-posta yollamarına olanak sağlar. • MarketplaceDetailTask – Windows Phone Marketplace’i çalıştırır ve kullanıcıların belirli ürün teklifleri yapmasını sağlar. • MarketplaceHubTask – Çalıştırılan Windows Phone Marketplace uygulamasında standart düzenlemenin aksine uygulamalar için çeşitli kategorilerin oluşturulmasını sağlar. • MarketplaceReviewTask – Windows Phone Marketplace uygulamasında o anki uygulamanın önizlemesinin yapılmasını sağlar. • MarketplaceSearchTask – Windows Phone Marketplace uygulamasında genel ya da özelleştirilmiş olarak arama yapılmasını sağlar. • MediaPlayerLauncher – Dahili ortam oynatıcısını (Media Player) açar ve istenilen dosyaları çalar. • PhoneCallTask – Telefon arama uygulamasını başlatır. Aranan kişiyi ve numarasını gösterir. Kullanıcılar "Arama(Call)" tuşuna basmadan arama başlamaz. • SearchTask – Uygulamanız üzerinden Bing arama motorunu kullanır gibi arama yapmak. • SMSComposeTask – Kullanıcılara metin mesajları yollayabileceğiniz Mesajlaşma uygulamasını açar. • WebBrowserTask – Web Tarayıcıyı açar ve istenilen adresle bağlantı kurar. Launcher’ı çalıştırmak Her launcher, kendine has bazı özelliklere sahiptir. Fakat herhangi birinin ayarlamasından sonra, onu kullanıcıya göstermeniz gerekir. Bunu yapmak için basit çağırma metodunu kullanın. SMSComposeTask ile ilgili bir örnek:

Launcher kullanımıyla ilgili bir proje için basit kod örneklerini içeren kodları buradan indirebilirsiniz.

Haberci Grup adına çevirisi GöKOğLaN tarafından yapılmıştır.

8.Gün: Chooser Kullanımı Dünkü yazımda Windows Phone uygulamasındaki launcher’lardan bahsettik. Bugün ise uygulamalarınız için fonksiyonel olan temel parçalardan bir diğeri olan chooser’lardan bahsedeceğim. Nedir bu Chooser? Kelime anlamı seçici demektir. Chooser, launchers’lara oranla fazla karışık değildir. Çünkü onlar kullanıcıların uygulamadaki launcher’ları bitirmek üzere verdikleri görev verilerini döndürür. Bulunduğumuz bu ortamda siz geliştiriciler için uygun olan her bir chooser’ı inceleyeceğiz. Yazının sonunda burada tanıtımı yapılan chooser hakkındaki proje ile ilgili kod örneklerini inceleyebileceğiniz bir link verildi. Her chooser için kod dosyasının başında aşağıdaki kodun bulunup bulunmadığından emin olmanız gerekir. Microsoft.Phone.Tasks referasansına ihtiyacımız var. using Microsoft.Phone.Tasks; Şimdi chooser’lara ufak bir göz gezdirelim. • CameraCaptureTask – Kullanıcınızın uygulama üzerinden direk kamera çekimi yapmasını sağlar. • EmailAddressChooserTask – Kullanıcılarınızın uygulamalarındaki kendi listelerinden diğer e-posta kullanıcılarını seçmelerini sağlar. • PhoneNumberChooserTask – Kullanıcılarınızın telefon listesinden diğer numaraları seçmesini sağlar. • PhotoChooserTask – Kullanıcılarınızın uygulamalarındaki fotoğraflarını seçip onları görüntülemelerini sağlar. Chooser’ları Kullanmak Her chooser kendine has bazı özelliklere sahiptir. Fakat herhangi birinin ayarlamasından sonra onu kullanıcıya göstermeniz gerekir. Bunu yapmak için basit çağırma metodunu kullanın. Ayrıca launcher’ları ve chooser’ları arasında bilmeniz gereken önemli bir şey ise bunların bir handler’a ihtiyaç duyuyor olmasıdır. CameraCaptureTask ile ilgili bir örnek:

Burada ise benim handler olayı ile ilgili kodum bulunuyor:

Şunu bir kenara not alın, kullanıcıların fotoğraf çekebilmesi için bu Handler’ı kullanmanız gerekiyor. Sonuçta bunun sayesinde resim dosyası verilerini uygulama içerisine dahil edebilirim. Yalnız şunu bilin ki bu Web Kameralarında bir avantaj sağlamaz. Bunun yerine beyaz bir alan etrafında dönen siyah blok oluşturur. Haberci Grup adına çevirisi GöKOğLaN tarafından yapılmıştır.

9.Gün: Hata Ayıklamanın Püf Noktaları Bundan önceki iki günde Başlatıcılar(Launchers) ve Seçiciler(Choosers) hakkında konuştuk. Bazen bu araçlar donanıma zorluk çıkartacak hatalara sebep olabiliyor. Bugün işte bu hata ayıklama konusunda ve bunun sonucunda uygulamaların verimli bir şekilde kullanımından bahsedeceğiz. Varsayılan Host ayarları Eğer App.xaml dosyasını açarsanız içerisindeki aşağıdaki gibi bir kod bloğuyla karşılaşırsınız.

Bu bölüm, hata ayıklama işlemini gerçekleştirirken size uygulamada neler olup bittiğini anlamanız adına mükemmel bilgi kaynağı sağlayan araçları etkin hale getirmenizi sağlar. Şimdi özetle bu araçlar nelermiş bir gözatalım:

EnableFrameRateCounter İlk kullanımda varsayılan değerleri içeren bu kısım çalışma esnasında kare hızını ölçümleri yaparak bunu size yansıtır. Şunu bir yere not alın, buradaki tüm araçlar Ve deyimi ile kaplanmıştır. Çünkü bunun kullanacağınız son ürün olmasını istemeyebilirsiniz. Hata ayıklamak aynı zamanda kilitli menüleri açmak için ya da uygulamaları denemek vs. gibi işler için harika bir yöntemdir. Hata ayıklama sırasında kilitler açılır fakat oradan ayrıldığınızda eski haline döner. Burada saniye başına 24 kareden oluşan bir film olduğunu düşünelim. Muhtemelen karmaşık animasyonlar ya da çeşitli hareketler olmadığı sürece bundan daha üst seviyede bir şeye ihtiyacınız olmayacaktır.

Çizim Bölgesini Yeniden Etkinleştir Bu hata ayıklama ayarları ile uygulamada çizilen karelerin nerede başladığını görmek mümkün. Etkinleştiğinde çizilen kareyi mavi renkle görürsünüz. Bu işlem, düşük kare oranlarını yakalamada ya da nasıl olduğunu anlamak istediğinizde önemli ölçüde yararlı olabilir.

Önbellek(Cache) Görselleştirmeyi Etkinleştir “Önbellek(Cache) görselleştirmeyi Etkinleştir” aracı size sayfanızdaki GPU nun hızlanmaya başladığı yerleri gösterir. Burada animasyon ve videoların ağır çalışıp sistemi kasacağını düşüneceksiniz ama tam bir sürprizle karışalacaksınız. Hata ayıklayıcıların kullanımıyla ilgili bir proje için basit kod örneklerini içeren kodları buradan indirebilirsiniz.

Haberci Grup adına çevirisi GöKOğLaN tarafından yapılmıştır.

10.Gün: Ekran Klavyesinden Bilgi Girme Windows Phone ile 31 Gün yazı dizimizin 10.günündeyiz. Bugün ekran klavyesi üzerinden nasıl işlem yapıldığını inceleyeceğiz. Super Gizli Emülatör İçin İpucu İnsanların windows phone 7’de uygulama geliştirirken, kendi klavyelerini kullanamadıklarından sıkıntılı olduğunu duymuştum. Klavyenizde Durdur/Duraklat tuşuna basın. Bu emülatörün klavyesindeki ve fiziksel olan durumları diğerine geçirecektir. Girdi Alanı Her mesaj kutusu ve şifre girdi alanını ayırmak için yeteneğe sahiptir. Bu gerekli değildir ama onlarla iltimas ederek kullanıcıların deneyimlerini daha olumlu yapar. Aşağıdakiler windows 7 klavyesi için aynıdır.

Açıkçası onlar tam olarak aynı klavye değildir. Ama onları meydana çıkarmak için az bir şey yapabilirsiniz. Bunlar ikisi için XAML örneğidir.



Girdi alanına iltimas ederek, kullanıcılara ihtiyaçları için en iyi klavyeyi veriyoruz. Eğer onlara telefon numaralarını sorsak, alpha numaralı klavyeyle sistemde bulunmak gereksiz olur. Burada kullanabileceğiniz diğer örnekler var. URL Bu klavye size url’nizi bitirmek için .com butonu sunar. Ayrıca .net .org .edu ve .co.uk gibi uzantıları da göstermenizi sağlar. Bu da oldukça kullanışlıdır.

Numara Girdi alanı basit biçimde standart numaralı klavye sunar.

Mesaj En üstte yüz ifadeleri göreceksiniz. Bunlara tıklandığında, bu tür duygu ifadelerinin büyük bir listesi çıkar. Bu da metin için muhteşemdir.

Telefon Numarası Bu örneğimden birisidir ki bu da alfabetik klavye yerine rakamsal gösterge sağlar.

E-mail adı ya da adresi E-mail adresi yazarken genel olarak bulunması gereken 3 şey vardır. periyod, sembol ve .com .net gibi TLD’ler. Bunlar girdi alanı için özel klavye seçeneği sunar.

Intellisense Kullanmak InputScope yani girdi alanı yazarken elde olan girdi alanları listelerini almadığınızı fark edebilirsiniz. Eğer tamamen farklı sözdizimi kullanırsanız, tüm listeyi görebilirsiniz. Burada nasıl yapacağınız gösteriliyor.

Eğer meraklıysanız, Bopomofo, Çinceyi özellikle mandarini kopya yapan resmi fonetik bir sistemdir. Ama kelimeyi seslendirmek oldukça keyiflidir. Burada intellisense’de bulacağınız girdi alanının tam listesi var.

Kod aracılığıyla Windows Phone 7 klavyesini çalıştırmak Asli metin kutusunu kullanıcılara sunmak istemediğinizde, kullanıcılardan klavye girdisi almak istersiniz. Bunun bir çok yolu vardır. Bunlar;

1- Sayfanıza buton koymak 2- Sayfanıza mesaj kutusu yerleştirmek ama kullanıcılar tarafından görünmez olduğuna dikkat edin. Ya da görsel ağaç eklemeye izin veren methodu kullanın ama kullanıcıların görmesine izin vermeyin. 3- Tıklandığında Focus()’u görünmez yapan olay işleyicisi kurun. 4- İşte bu kullanıcıların mesaj kutusunu gösteremeden size klavyeyi gösterir. PasswordBox Şifre alanı hakkında konuşacak bir şey yok ama bilmek istediğiniz şeyler olabilir. İlk karakterler karanlık biçime dönüşünceye kadar kullanıcılar klavyede bir karaktere bastığında bir saniyelik beklemeyi ayarlar. Örneğin; karakterleriniz madde ve yıldız imine dönüşür. Bilgisayarınızda bekleme olmaz ama standart klavyeyle daha dikkatli olursunuz. Aşagıdaki koddan yararlanabilirsiniz.

Buradan uygulamaya ait kaynak kodları indirebilirsiniz.

Haberci Grup adına çevirisi Orhanbey tarafından yapılmıştır.

11.Gün: Accelerometer Kullanımı Accelerometer Nedir? Windows Phone’ların içinde olan bir sensördür. Serbest düşme ile ilgili olan ve 3 açıdan (X,Y,Z) ivmeyi ölçen bir araçtır. Zaman bilgisine ek olarak G-Forces (1G = 9.81 m/s2) olarak ifade edilir. Bu şu anlama geliyor; eğer telefonunuz tamamen yukarı bakacak şekilde duruyorsa, Z ekseni -1.0 olarak okunur. Diğer iki açı 0 olarak okunur. Aşağıda farklı değerleri gösteren hazır bir resim mevcuttur.

WP7 Accelerometer’dan Değerleri Nasıl Alırım? Bir hayli kolaydır. Büyük bir karmaşıklık için yönetimi elde tutmak gerekiyor. Bunu basit bir uygulama ile yapabiliriz. Burada neye ihtiyaç duyabiliriz: 1234-

Yeni bir accelerometer nesnesini somutlaştırın. Verideki değişikliği izlemek için yeni bir ReadingChanged() olayı oluşturun. Sayfamıza geri dönüş mesaj dizisi olayının sonuçlarını geçin. Uygulamamız içindeki veri değişkenlerini kullanın.

Bu örnek için MainPage.xaml.cs dosyamın tamamı aşağıda görüldüğü gibi. MainPage.xaml dosyamda oluşturduğum 3 TextBlocks (XText, YText, and ZText)’u göreceksiniz. Bu yüzden ekrana değerleri yazabilirim. Ayrıca Accelometer’a giriş Microsoft.Devices.Sensors’den yeni bir referans eklemem gerekir.

Sayfanın yukarısında verdiğim kodlara dikkat ederseniz, Z eksenin değerinin neden -1.0 olarak okunduğunu anlayacaksınız. Çünkü emülatör telefonun düz bir zeminde durduğunu varsayar. Accelerometer verisini benzetmek için bir yol yok. Fakat dışarda bunu yapacak yolu bulan çok zeki insanlar vardır. Düşüncemin bir bölümünde her bir emülatör için bir örnek yazmak istedim. Fakat accelerometer verisini benzetmek için çok mükemmel yollar var. Her bir örnek için kod yazmaktan daha kolay ve mümkün olacağını daha önce ifade etmiştim. Reactive Extension Reactive Extension Accelerometer’ı bir araç olmaksızın çalıştırabileceğiniz bir framework’dür. Bu eylemi gerçekten kontrol etmek istemezsiniz. Lakin sizin için rastgele bir data üretir. Gelişimi durdurmak ve kurulumu yapmak çok kolay lakin hala bir telefonunuz yok :). MSDN web sitesinde buradan mükemmel bir gezinti yapabilirsiniz. accelKit Bu özellik hazır seçeneklerin en mükemmelidir. Arttırılmış gerçeklik ile kameranızı kaldırıp ve sizin gerçek hayatta hareket etmek istediğiniz noktaya çıktı vermenize olanak tanır. 2 sebepten ötürü, bunun ne müthiş olduğu görüldüğünde kesinlikle şaşırılır. 1- Aslında kendi eyleminizi oluşturmanıza olanak tanır. 2- Arttırılmış gerçekliği kullanır. Sadece teknolojinin şaşırtıcı faydasıdır. WiimoteLib Windows Phone benzetiminden öte daha çok kütüphane olarak kullanılır. Fakat amaçlarımız için bile iyi çalışır. Temel hikaye bu: Eğer bir Nintendo Wii’ye sahipseniz, Accelerometer verisini oluşturmak için otomatik kumandayı kullanabilirsiniz. Bir geliştirici olan Brain Peek sizler için küçük bir kod kütüphanesini birleştirdi. Buradan daha fazla bilgi için siteyi gözden

geçirebilirsiniz. Windows Mobile Unified Sensor API Windows Mobile 6.x araç tiplerinin güvenli olanları üzerinden accelometer ile etkileşim kurmak için bir yoldu. Bu mesaj Windows Phone’nun gelişimi için teknolojik olarak kaldırılması açısından basit bir yol olmasının açıklamasıydı. Kod örneklerini önerir gibi gözükmek istemiyorlardı. Fakat biraz açıksözlülük gibi gözükmektedir. Geçici olan yukarıda ki tüm çözümleri hatırlayın. Gerçek cihazda sorun yaşadığınızda; bunu yapmak için henüz şansınız yoksa benimle iletişime geçin birkaç saati alsa bile size neler yapabileceğimi göstereceğim. Uygulamaya ait kaynak kodları buradan indirebilirsiniz. Haberci Grup adına çevirisi cihanx tarafından yapılmıştır.

12.Gün: Titreşim Kontrolleri Bugün kü makalemizde, VibrateController hakkında konuşacağız ve kullanıcılarımıza uygulamamızın işleyişiyle ilgili nasıl geri bildirim yapacağımızı tartışacağız. Çünkü birisine telefonunu çabucak nasıl titreştireceğini anlatmak, tatsız şakalara sebep olur. Telefon Neden Titreştirilir? Bir telefonu titreştirmek için kesinlikle bir çok aptalca ve/veya uygun olmayan sebep vardır. Fakat bu makalenin amacı için telefonu titreştirmek için bir kaç belli başlı nedenleri anlatacağım. Oyun Bildirimi Gayet açık bir sebepten başlayalım. oyunlar: Oyun oynarken, oyuncunun ihtiyacı olan bütün bilgileri o anda ekran yoluyla veremeyebilirsiniz. (Özellikle de parmaklar ekranın üzerindeyken) Oyunculara “Dokunsal Karsilik” vermek, onlarin saldiriya uğradıklarını bilmelerini sağlar ya da önemli bir şeye dikkat etmelerini söyler. Tuş Bildirimi Bu belki de sizin için çok daha basit olacak ama her bir tuş için bir uygulamanız var. Dokunsal bildirim size doğru tuşa bastığınızı ya da basmadığınızı söyler. Windows Phone’daki varsayılan tuşlar basıldığında katı bir renk alır ama çoğu zaman kullanıcılar tuşa bastıklarından emin olamıyorlar(özellikle de uygulamanın etkisi bir kaç saniye sürüyorsa). Onlara ani titreşimler vermek, tuşa bastıklarından emin olmalarını sağlar. Bilgilendirmeler Titreşim bildirimi için bir diğer açık fakat yetersiz kullanılmış fırsat da bilgilendirmelerdir. Varsayılan olarak, eğer bir e-posta mesaj vs. alırsanız telefonunuz titreşir(ya da ses çıkarır). Kullanıcının uyarılması gerektiğinde telefon titreşir. Bu özellikle uygulamanız

pasif olduğunda önemlidir. Örnegin, siz koşarken konumunuzun izini süren bir uygulama. Eğer sinyal kaybederse ya da hedef noktanıza ulaştığınızda bir titreşim telefona bakmaya gerek kalmadan kullanıcıyı bilgilendirir. Aynı örnek içinde her 1/4 km’de bir bildirim yaptırabilirsiniz. Böylece kullanıcılar ne kadar yol katettiklerinin farkında olmuş olurlar. Telefonun Titremesini Nasıl Sağlarım? Çok şükür bu inanılmaz derecede kolaydır. Bunu yapmak için sadece iki satır koda ihtiyacınız var ama kendi ihtiyaçlarınız doğrultusunda ayarlamak için önemli ölçüde bir zaman harcamanız gerekebilir. İşte temel kodlar: VibrateController vc = VibrateController.Default; vc.Start(TimeSpan.FromMilliseconds(100)); Ne Kadar Süre Boyunca Titreştirmeliyim? Bir bildirim için ne kadar süreyle titreşeceğine dair herhangi özel bir kural yoktur ama benim takip ettiğim bazı yöntemler var ve bunları sizinle paylaşacağım: 1. Saniyenin 1/10’u tuş basımı için uygun bir süredir.(Bu aynı zamanda VibrateController’in yapabileceği en kısa zamandır.) 2. 2 saniye = ”TELEFONUMA NELER OLUYOR?” uyarısı verir. 2 saniye herhangi tek bir uyarı için ÇOK uzun bir zamandır. 3. 300 milisaniye (~1/3 saniye) sabit bir bildirim titreşimi için iyi bir süre gibi görünüyor. Kullanıcının dikkatini onların telefonlarıyla ilgili bir sorun olduğunu düşündürmeden çeker. 4. Kısa çabuk titreşimlerde kullanıcıyı neler olduğuyla ilgili bilgilendirmek için mükemmel bir yoldur. Bu örneği aşağıdaki download linki olan yazdığım örnek koda ekledim ama bunu nasıl yaptığımla ilgili daha açık bir açıklama için “ Silverlight ile Nasıl SetTimeout Fonksiyonu Yapılır?” adlı makalede görebilirsiniz. Kodu indir. Haberci Grup adına çevirisi SOLVER tarafından yapılmıştır.

13.Gün: Lokasyon Servisleri Dun titresim kontrolleri ve olan bitenlerle ilgili kullanicilarin dikkatlerini nasil cekebilecegimiz hakkinda konustuk. Bugun, LocationServices yani konum servislerinden ve telefonun nerede olduguyla ilgili nasil bilgi alacagimizdan bahsedecegiz. Konum Neden Onemlidir? Cihazlar ilerledikce, cep telefonlari size daha kisisellestirilmis bilgi verebilme ozelligine sahip oldu. Bu ozellikle telefonun konumu hakkinda konustugumuz zamanla ilgilidir. Iste bazi ornekler: Field Documentation Uygulamasi

Kullanicilarimiz icin olusturdugumuz binlerce semasi, bolum listeleri ve dokumanlari olan bir uygulamamiz oldugunu varsayalim. Bircok cihazda bugun birlikte calistiginiz musteriyi arastirmak, ziyaret edeceginiz belirli ofisleri bulmak ve sonra kriterlerinize uydugunu dusundugunuz duzinelerce dokumani incelemek zorunda kalabilirsiniz. Bu uygulamaya konum verisi ekleyerek kullanicinin ihtiyaci oldugu butun aramayi ortadan kaldirmis oluruz. Eger her bir dokuman konum belirlemeyle etiketlenmis olsaydi, binaya yaklastikca, belirli dokumanlar o bina icin aninda kullanilir olabilir. Eger buyuk bir tesiste yeteri kadar belirli konumumuz varsa, tesisteki hangi cihaza ne kadar yakin oldugumuzu dahi bilebiliriz. Uygun veriyi belirlemek icin cihazin konumunu kullanmak, uygulamanizi konum verisiyle zenginlestirmenin bir baska yoludur. Golf Uygulamasi Yaptiginiz puanlari girmenize izin veren, dezavantajlarinizi takip eden ve hatta bu verileri arkadaslarinizla paylasabilen bircok golf uygulamasi gordum. Ozellikle aklimda on plana cikan bir tanesi var. Bu uygulama, basladiginda sizin hangi golf sahasinda oldugunuzu taniyor. Ayni zamanda yakindaki sahalari da listeliyor(eger seyahat halindeyseniz diye). Bunlara ek olarak, hangi deligin uzerinde oldugunuzu taniyor ve kum tumsegi, su, agac, vs. gibi hangi noktaya ne kadar yakin oldugunuzu soyluyor. Gormus oldugum en carpici ozelliklerden biri de aslinda kare analiz. Golf sopasina her vurusumda, hangisi oldugunu ona soyluyorum. Topun oldugu yere yoneldigimde, aslinda sopayla ne kadar uzaga vurdugumu takip ediyor ve yeterli veriyle bana bir golf sopasi bile onerebiliyor. Kesinlikle konum bilgisinin etkileyici kullanimi. Konum Servislerinin Kullanimi Cihazin konumu hakkinda bilgi edinmek icin uc yol vardir. GPS, cep telefonu ucgenlemesi ve Wi-fi konumu. Burada her birinin saglamligi ve zayifligina kisaca bir goz atalim:

Siz bu uc bagimsiz kaynaktan gelen verileri karsilastirmak icin endiselenmeden once, yukaridaki resimdeki yesil buluta bir goz atin. Microsoft bize bir konum dizisi sagliyor.

Windows Phone 7 Ile Konum Servislerinin Kullanimi Buraya kadar bircok sey yazdim, ama bunun olmasi icin kodlar hakkinda birseye deginmedim. Iste size iyi haber: bu kod olarak yapacaginiz en kolay sey olabilir. Sadece adimlari takip edin: 1.Yeni bir GeoCoordinateWatcher nesnesi olusturun. 2.Kullanicinin pozisyonu degismesi durumu icin bir olay giderici olusturun. 3.Olay basladiginda veriyi yakalayin. Kullaniciniza belki de bundan daha fazla ozellik onermek isteyebilirsiniz.(asagidaki yazdigim kod da tam bunu yapiyor). Iste kodlar:

11.Gun’deki ivme olcer gibi, aslinda emulatorun konum verisi edinmek icin bir yontemi yok. Eger yukaridaki kodu emulatorde calistirirsaniz, hicbir veri alamazsiniz. (Bu bilgi icin GeoCoordinateWtcher durumunu control edebilirsiniz). Fakat iyi dostumuz Reactive Extensions’u kullanarak bu veriyi benzetebiliriz. MSDN’de bunu nasil yapacaginizla ilgili goze carpan bir makale var. Bu yuzden onlarin cabalarini denemeyecegim.

Reactive Extensions ve Windows Phone’da konum ile ilgili MSDN makalesine buradan erisebilirsiniz. Ornek ugulamamda yapabildigim kadar konum servisinden yararlanmaya calistim. Kullaniciya yuksek ve varsayilan arasinda dogruluk secimi, servisi baslatma ve durdurma ve hatta uygulamadaki o anki koordinatlarla harita olusturma izini verdim. Buradan indirebilirsiniz.

Haberci Grup adına çevirisi SOLVER tarafından yapılmıştır.

14.Gün: Tombstoning Dun, konum verisini kullanarak uygulamalarimiza daha ozel ve bir his vermekten bahsettik. Bugun, belki de Windows Phone 7 hakkinda en tartismali konu olan coklu gorev hakkinda yazacagim. Windows Phone 7’nin zorlanacagi noktalar hakkinda bircok makale yazildi ve bu listenin en basinda ise “Coklu gorev eksiklikleri” geliyor. Windows Phone 7 Coklu Gorev Yapar Evet bunu soyledim. Soyledim cunku bu dogru. Bir Windows Phone kesinlikle bir coklu gorev cihazidir. Oyun oynarken muzik dinleyebilirim ya da internette gezinirken e-posta alabilirim. Yanlis bilgilendirmenin dogdugu nokta ise biz yazilim gelistiriciler arka planda calisan uygulama yapamamamiz. Windows Phone 7 ile calistigim bu bircok ay icerisinde uygulamami arkaplanda calistirmak icin sadece iki tane gercekten zorlayici sebeplerle karsilastim. 1.Uygulamam Pandora gibi muzik caliyor. Sunu kabul etmeliyim ki bu uygulamanin arkaplanda calismasi gerekiyor. Kullanici kesinlikle muzigin durdugunu fark edecek. 2.Uygulamamin cihazin sensorlerinden veriye ihtiyaci var. GPS gibi. Eger uygulamam calismiyorsa, kosmak istediginiz 4 kilometreyi kostugunuzu size soyleyemem. Fakat bu orneklerin disinda, uygulamamin arka planda calismasinin gerekli oldugu bir baska durumla karsi karsiya kalmadim. “Ama web servisimden guncellemeler almak nasıl olacak? Onlari almak icin calisiyor olmam gerekmez mi?” demeden once, cevabim HAYIR gerekmez. 19.gunku makalemde bahsedecegim. Bu problemleri cok zekice bir sekilde cozen Push Notification servisleri adli muhtesem bir mekanizma var. Geri kalanimiz icin bize islemimiz durdurulsa bile uygulamamiz surekli calisiyor gibi davranabilmemizi saglayan “Tombstoning” adli mukemmel bir mekanizma verdiler. Iste bunun nasil calistigiyla ilgili kisa bir diyagram:

Yukaridaki orneklemeden de gorebileceginiz gibi, bir kullanıcı uygulamamiza girdiginde veya ciktiginda karsilamak icin etkisizlestirme ve yeniden etkinlestirme olaylari var. Bu olaylari kullanarak, uygulamamizi kullaniciya hic calismayi durdurmamis gibi gosterebiliriz. Ayrilmis Bellegi ve Push Notifications’i ekledigimizde bu inanilmaz derecede guclu bir destan oluyor. Coklu Islem Yapıyormus Gibi Davranmak App.xaml.cs dosyanizin icinde 4 tane yerlesik yontem vardir.(Proje dosyalarinizin yapisi hakinda daha fazla bilgi icin 1.Gün’e bakin). Varsayilan durumlarina satirici komutlarla bir goz atalim:

“Launching” ve “Closing” metodlari klasik durumlarda kullanilabilir: uygulamayi klasik yontemlerle acmak ve kapatmak (Geri tusuyla cikmak, ornegin, ya da uygulama listesinden uygulamayi baslatmak). “Activated” ve “Deactivated” metodlari klasik olmayan giris ve cikislar icindir. Ornegin, geri tusunu uygulama icinde geri gitmek icin kullanmak, ya da kullanicinin gelen cagriyi cevaplamasi uzerine uygulamanin kapatilmasi. Bunlar klasik olmayanlardir. Benim onerim bu durumlari yogun bir sekilde test etmenizdir, ama bunlar baslangic icin somut yonergeler olmalidir. Bu metodlari herhangi bir kullanici uygulamadan ciktiginda durumunuzu kaydetmek ve daha sonra geri dondugunde durumu yenilemek icin kullanmaniz gerekiyor. Bu nedenle, asla terk etmedikleri bir iluzyon olusturmaktir. Bunu yapmamizin sebebi oldukca basit: 1.Bircok kullanici uygulamayi terk ettiklerinin farkina varmiyorlar, boylece uygulama sistem kaynaklarini ve bataryayi kullanmaya devam ediyor. 2.Bircok uygulama arkaplanda calisma ihtiyaci duymuyor. Cihazin kaynaklarini kullanmanin daha iyi yollari var. Deaktivasyon’da Durumunuzu Kaydetmek Bir kullanici uygulamadan ciktiginda yapmak isteyeceginiz ilk sey onun bilgilerini kaydetmek olacaktir. Benim ornek uygulamamda, calismasa bile calisiyor gibi gorunen bir zamanlayici olusturacagiz. Kodun sadece “Tombstoning” ile ilgili parcalarini gosterecegim, ama uygulamanin tamami oynamaniz icin asagida olacaktir. Veriyi kaydetmek icin PhoneApplicationService kullanacagim. Yarin verinizi kaydetmenin daha kalici yolu olan ayrilmis bellekten bahsedecegim. Ornegimde, uygulamamdan ne zaman ciktiginizi bilmek isterim. Boylece ciktiginiz zaman ve sonra geri dondugunuz zaman arasindaki farki anlayabilirim.

Uygulamamda, ayni zamanda sayfayi actigimda calisan OnNavigatedTo olayi da var. Eger benim “LeftTime” degerim mevcutsa, bunu kullanirim. Eger mevcut degilse, uygulamayi ilk defa calistirdiginizi varsayarim. Yeniden Aktive Etmede Durumunuzu Geri Getirmek Bu ornekte, uygulamadan cikarken kaydettigim degerleri geri getirecegim.

Bu metodu kullanarak kullanici uygulamayi terk etse dahi devam eden bir zamanlayici tutabiliyorum. Eger herhangi bir kullaniciya sorsaniz, size uygulamanin calistigini soyleyecektir. Alacaklari tek belirti uygulama yavas yuklendigi zaman cikan “Resuming” ekranina cabucak bir goz atmak olacaktir. Aslinda uygulamami durmasi icin zorladim boylece asagidaki ekran goruntusunu alabildim:

Iste tombstoning’in arkasindaki temel hikaye budur. Cikarken durumunuzu kaydedin ve tekrar girerken geri getirin. Kullanicilariniz hicbir zaman farki anlamayacaklardir, ayrica onlara batarya omru ve performans vermis olacaksiniz. Yukarida gostermis oldugum kodun daha karmasik hali, zamanlayicim sonsuza kadar calisiyor (arkaplanda bile). Cikmak icin emulatordeki Start tusuna basin ve geri donmek icin Back tusunu kullanin. Ayrica metin girislerini yapmaniz icin bir tane TextBox var ve siz ciktiginizda onu kaydedecektir. Uygulamaya ait kodları buradan indirebilirsiniz.

Haberci Grup adına çevirisi SOLVER tarafından yapılmıştır.

15.Gün: Isolated Storage Kullanımı Dün uygulamamızdaki istenmeyen durumları nasıl kontrol edeceğimizi anlattık, böylece onlar arka planda çalışıyormuş gibi gözüküyor. Bugün, ayrık depolama kullanarak verilerinizi telefonda bölgesel olarak nasıl depolayacağınızı anlatacağım. Isolated Storage Nedir?

Isolated Storage(ayrık depolama) yeni bir kavram değildir. Silverligt’ın 2. versiyonundan beri kullanılmaktadır. Basit olarak verilerinizi ya da dosyalarınız yerel dosya sisteminde depolamaktır. Ayrık diyoruz çünkü sadece sizin uygulamanızın bu verilere ulaşma yetkisi var. Eğer iki uygulamanız varsa ve ikisi arasında veri paylaşmak istiyorsanız, sizin için verileri paylaşacak bir tür bulut depolama sistemi kullansanız daha iyi olur. Yaptığımız uygulamaların telefondaki başka uygulamalar ile paylaşma, çağırma ya da etkileşim içinde olma yeteneği olmayacak. Ayarlar ve Dosyalar Verilerinizi yerel olarak depolamanın iki yolu var. Birincisi isim/değer kütüphanesi çifti aracılığıyla. Buna “IsolatedStorageSettings” adı verilir. İkincisi ise asıl dosya ve dosya oluşturma aracılığıyla. Buna “IsolatedStorageFile” adı verilir. Aşağıdaki resim işin özünü anlamamıza yardım edecek ve sonra her biri için örnek vereceğim.

IsolatedStorageSettings Çoğu amacınız için bu, ihtiyacınız olabilecek tek depolama sistemidir. IsolatedStorageSettings size isim/değer çiftlerini bir sözlükte (unutmayalım ki bu herhangi bir kurulum gerektirmez) depolama imkanı sağlar. Bu verileri daha sonra okumanızı sağlar. Bu veri, uygulamanın kapatılması/açılmasında, telefonun kapatılmasında vs. kalıcıdır. Siz o veriyi silene kadar ya da kullanıcı uygulamayı kaldırana kadar kalıcıdır. Hatırlamanız gereken önemli bir nokta da şu, bir değer kütüphaneye eklenmeden o değeri okuyamazsınız. Benim her örneğimde kütüphaneden değer okumadan önce o değerin var olup olmadığını kontrol eden bir kod bloğu göreceksiniz.

İşte size örnek bir kod; uygulamanızdan gönderilen mail ile bir kullanıcının tercihini kaydetmeniz gerek. Kullanıcının karar vermesini sağlayan ve "IsolatedStorage"a olayların değerlerini depolayan bir “CheckBox” ekledim.

Gördüğünüz gibi inanılamayacak kadar basit bir olay. Unutmamamız gereken birkaç hususu belirtmeliyim; 1.“IsolatedStorageSettings” den oluşturulmamış bir değeri okumaya çalışmak bir hata verecektir. Ayarları başlangıç durumuna getirdiğinizden emin olun yada her zaman “.Contains” özelliğini kontrol edin. 2.Ayarlara istediğiniz her şeyi kaydedebilirsiniz. Ben örneğimde mantıksal bir değer kaydettim, siz ayrıca bir müşteri nesnesi ya da istediğiniz başka bir şeyi kaydedebilirsiniz. 3.Unutmamalısınız ki verinizi okuduğunuzda onu açık bir şekilde ayırmalısınız. Mantıksal değerinizi kullanmadan önce ayırmanız gerektiğini fark edeceksiniz. Nesneyi kaydediyorsunuz fakat depolama, türü kaydetmiyor. Bu sizin ne zaman kullanmak istediğinize bağlı. 4.Bir değer ayarlamak kütüphaneye bir değer eklemekle aynı. Aslında “settings.Add()” kodunu yazmaya gerek yok fakat söz dizimini görebilesiniz diye ekledim.

Yani bu onun hakkında. “IsolatedStorageSettings” pek karmaşık değil. İsim/değer çiftlerini kısa bir kod bloğu ile kaydedebilirsiniz. Dosya oluşturmak ve kaydetmek biraz karmaşık fakat sürpriz bir şekilde o da basit. Şimdi bir göz atalım. IsolatedStorageFile IsolatedStorageFile kullanmak kullanıcının cihazına asıl dosyaları depolamak için kullanılabilecek bir düzenektir. Ben yapacağım örnekte alt dizinde bir text dosyası oluşturacağım ve daha sonra bu dosyanın içeriğini okuyacağım. Klasör, alt klasör, dosya oluşturma ve silme imkanımız var. Bir ton kod yazacakmışız gibi görünsede aslında gayet basit bir işlem yapacağız. Yeni bir IsolatedStorageFile nesnesi oluşturuyoruz ve bunu IsolatedStorageFileStream kullanarak sürücüye yazıyoruz. Kodları yazarken yorum satırları ekledim böylece neler olduğunu daha kolay anlayabilirsiniz. İki durumum var, bunlardan biri dosyaları kaydediyor diğeri ise bu dosyaları okuyor.

Bu uygulamayı terk edene kadar çok büyük bir numara gibi gözükmüyor, geri gelin ve dosyayı tekrar yüklemeyi deneyin. Windows Phone 7’de kullanabileceğimiz iki farklı basit depolama düzeneğimiz var. Bunlar IsolatedStorageSettings ve IsolatedStorageFile.

Örnek Kod

Haberci Grup adına çevirisi @em tarafından yapılmıştır.

16.Gün: Geniş Görünüm Kontrolü Dün, isolated storage kullanımını hakkında konuştuk. Bugün ise tamamen yeni bir kontrol olan panoramayı inceleyeceğiz. Panorama Kontrol Nedir? Eğer video veya "hub" ekran görüntüsünü Windows Phone 7’de gördüyseniz, orada panorama kontrol denetiminin yoğun olarak kullanılıyor olduğunu fark etmişsinizdir. Kısacası, navigasyon ve bu çoklu ekran kaydırma menüleri ve data’ları vardır. Aşağıda birkaç örnek var.

Tamam, artık panorama kontrolun neye benzediğini biliyoruz, uygulamayı konuşalım. Panorama Projesi Oluşturma Bu serinin ilk 15 günü için her proje Windows Phone Uygulamalarının şablonu temel alınmıştır. Eğer isterseniz Windows Phone Panorama Uygulamalarını bir Panorama için kullanabilirsiniz. İşte listesi:

Önemli bir not: Panorama için kullanılan bir şablonun OLMAMASIDIR. Bu proje şablonu, veri için bir MVVM framework ve bir grup TV’yi sizlere sunar.

Basitçe, Panorama kontrolu sadece bizim emrimizdedir ve istediğimiz herhangi sayfaları ekleyebiliriz. Ne demek istediğimi bu konuda sizlere göstereceğim. Toolbox’a Bir Panorama Ekleme Eklemedeki ilk bilmeniz gereken şey Panorama’nın her zaman geçerli denetimlerinin olmamasıdır.(bu Visual Studio 2010 toolbox için böyledir). Kullanmadan önce sayfanıza namespace’i eklemelisiniz. Toolbox’a eklemenizin en kolay yoludur ve sonra tekrar oradan kullanmanız. Yapmanız gereken ilk şey toolbox’ı açmanız ve sağ tuşa tıklayıp oradan "Windows Phone Control" sekmesindeki "Choose İtems"i listeden seçmeniz.

Görünen dialog box’dan otomatik olarak Windows Phone Components’i sizin için yükler ve açar. Kontrollerin olduğunu birçok kontrolde göreceksiniz. Onlar sizin şuan ki toolbox’ınızdır. Aşağı doğru ilerleyin ve Panoramayı bulun ve ekleyin.

Böylece bunları toolbox için eklediniz, sayfalarınıza Panorama kontrol eklemek için en kolay yolu yaptınız. Sayfanıza Bir Panorama Ekleme Hayatınızı kolaylaştırmak için önceki adımları attık. Sayfanızdaki tüm XAML öğelerini silin ve Panoramayı ekleyin. Toolbox’dan bir Panorama sürükleyin, artık hazırsınız. Varsayılan söz dizimi aşağıdaki gibidir: Başlangıç için çok fazla değil, değil mi? Ayrıca dikkat etmelisiniz ki sayfanıza XML namespace’sini eklediniz. xmlns:controls="clrnamespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone.Controls" Şimdi kesinlikle sayfanızda MİNUMUM miktarda kod var, hadi bunu Panorama kontrol açısından yapalım, bakalım ve hissedelim. Panorama kontrol görünümünün nasıl olduğunu buradaki örnekte görelim:

Panorama Arka Plan ve Başlık Ayarları Panorama kontrolünün özelliklerinden biri de arka planda büyük resim konulabilmesi ve geri kalan içeriğin ise daha yavaş kayması. Uygulama için kullanılacak güzel bir resim bulabilirsiniz. Aynı benim ki gibi :

Arkaplanımdaki Panorama kontrol resmini uygulamak için sadece projemden eklemem gereken resim ve fotorafla birlikte kaynak olarak bir ImageBrush oluşturmam gerek. Resimdeki Opacity değerini %50 olarak ayarladığımı farkedeceksiniz. Bunun nedeni beyaz metinde parlak resmin iyi durmayacak olmasıdır.

Burada telefon üzerinde nasıl göründüğünü görüyosunuz.

Tamam, bir arkaplan resmimiz var. Şimdi buna bazı içerikleri ekleyelim. Bir PanoramaItem Oluşturmak Şimdi, bizim uygulamamız çok iyi çalışmıyor. Bu sadece bizim arkaplan resmimizi gösterir. Kaymıyor veya hiçbirşeyi göstermiyor.

Her PanoramaItem tamamen bağımsızdır, böylece her bölümü tamamen farklı tekniklerle oluşturabilirsiniz. Bir PanoramalItem için kodu size bırakacağım ve sonra bir sonra ki bölümde özel içerikler hakkında konuşabiliriz. Aşağıda göreceksiniz ki 3 PanoramalItems tanımladım ve bunların her birine başlık verdim. Muhtemelen bu daha iyi ekran görüntüsü ile gösterilmiş, bu yüzden koddan sonra bunları ekleyeceğim.

Arkaplan kaydırması ve en iyi başlık var ama gerçekten nasıl aynı hızda değil? Bu uygulama ile kullanıcı tava gibi önemli miktarda görsel derinliğini verir. Ama gene de oldukça boştur. Hadi oradaki bir kaç içerigi alalım, bunun gibi görünüyor:

Bir PanoramaItem İçerik Eklemek Kesinlikle olmamalı, ama her zaman bir ListBox ile başlamanızı tavsiye ediyorum. Eğer varsa, dikey içerik size güç verir. Pek çok seçenek olmasına rağmen Listbox muhtemelen en kolaylık sunmaya devam ediyor.

Konu bu kadar. Kendi bireysel XAML dosyası simgeleri var ama bu Panorama aslında bireysel oyunların oynamadan önce gezinme yeteneği sağlar. Örnek Kod Bu yazıdaki örnek kod herşeyi içerir. İndirin ve Panorama kontrolünü kendiniz için öğrenin. Haberci Grup adına çevirisi TRIGGER tarafından yapılmıştır.

17.Gün: Pivot Kontrolü Geçtiğimiz gün Panorama kontrolünden bahsetmiştik, nasıl kullanılır ve kullanım amacı nedir gibi. Bugün de benzer bir şey yapacağım fakat tek farkı isminin Pivot olması. Pivot Kontrolü Nedir? Ben pivot kontrolünü, kullanıcılarınız için verilen aynı verinin farklı parçaları için harika bir kontrol olarak düşünüyorum. Mesela, Windows Phone’deki takvimde, ajanda ve gün görünümleri arasında atlama yapabilirsiniz. Aynı veriyi sunarlar fakat her ikisi de tam anlamıyla farklı görünümdedir. Pivot kontrolü kontrolünün bir başka yolu da onu farklı demetler halinde nesneleri kategorize ederek kullanmaktır. Keza ayarlarda buna çok güzel bir örnektir. Sistem ve karmaşık uygulamalar için özel ayarlarınız var. Bu örneklere kısaca bir göz atalım.

Panorama ve Pivot Kontrolü Arasında Farklı Zamanlarda Kullanabileceğim Özel Şeyler Var Mı? Evet kesinlikle var. Ve bununla ilgili okuyabileceğiniz/görebileceğiniz iki güzel yer var. Tim Heuer, ne zaman hangi kontrolü kullanacağınızla alakalı güzel bir makale yazmış ve yine burada, Channel 9’un Windows Phone Düzen Günleri Dizisinde güzel bir video var.

Benim rehberim gayet basit: 1.Uygulamalarınız ile alakalı her türlü açıklamalar için Panorama kullanın. 2.Aynı veriyi farklı yollarla göstermek istediğinizde Pivot kontrolünü kullanın. Pivot Kontrolünün Kullanılması Dünün konusu olan panorama kontrolünü okumadıysanız şöyle bir göz gezdirin. Panorama ve Pivot kontrolünü Visual Studio 2010’un Araç Kutusunda nasıl kullanılacağını anlatacağım. Şimdi Pivot kontrolünün yapısına ve nasıl kullanılacağına doğrudan dalış yapacağız. Yapısı Panorama ile çok benzer olmasına karşın bu günkü örneğimizde sabit içerik yerine bir veri listesini DataTemplates kullanarak ListBox’a bağlayacağım. Burada içine bir kaç içerik eklediğim Pivot kontrolünün temeli bulunuyor (bu cinsiyetine göre bebek isimlerini gösteren küçük bir uygulama):

Bu, bir kaç veri dışında pek bir şey vermiyor. Neyse bunu sonra yapalım. DataTemplates İle ListBox’ları Kullanmak Her Pivot nesnesi için bir ListBox kontrol ekleyeceğim ve onların içinde de her veri girdisinin nasıl görüneceğini tanımlayan bir ItemTemplate tanımlayacağım. Bunlar da benim eklediğim XAML:

Bu dizi içerisinde pek fazla bahsetmediğimiz bir şey de DataBinding (veri bağlama). Her TextBlock da farkedeceksiniz ki Text değeri "{Binding Name}" olarak tanımlanmış. Bunun anlamı; ListBox içine girdiğimiz her nesne için TextBlock nesnenin adını Text değerini doldurmak için kullanacaktır. Bu veriyi ListBox’a eklemek için code-behind dosyasına küçük bir kod eklememiz gerekiyor (Bunlar, MainPage.xaml.cs’nin tüm içeriği):

Her ListBox’da, göreceksiniz ki, ItemSource’yi bir kaç basit LINQ söz dizimini BabyName nesnesine karşılık tanımladım. Eğer LINQ’ya yabancıysanız, Language Integrated Query’i (Sorgu Tabanlı Dil) atlamışsınızdır. Burada çok güzel bir LINQ kaynak listesi var. Bu sorguları tanımlarken ben, veri topluluğunu basitçe sıralıyor ve ayırıyorum ve her PivotItem kesitinin aynı veri topluluğunu farklı olarak atıyorum. Genellikle Panorama ya da Pivot’da 7’den fazla kesit kullanmamalısınız, öncelikli sebebi, kullanıcılarınızın azami hatırlama sınırı 7 olmasıdır. Eğer orada olduklarını hatırlayamazlarsa, kullanamazlar değil mi? ( 7 insanlar için hatırlama limitidir, bu yüzden telefon numaraları da aynı uzunluktadır.) Windows Phone 7 ye Pivot kontrolünün asıl veriyi ListBox’la tanımlayarak uygulanmasını anlatan basit bir örnekti bu. Lütfen kodları indirin ve üzerinde oynama yaparak öğrenin. Haberci Grup adına çevirisi urkera tarafından yapılmıştır.

18.Gün: WebBrowser Kontrolü Son iki gündür farklı görünüm kontrollerinden bahsettik; Panorama ve Pivot kontrolü. Bugün bir başka önemli kontrol olan WebBrowser kontrolüne odaklanacağız. WebBrowser Kontrolü Ne Yapar? Eğer adından belli olmuyorsa, WebBrowser kontrolü kullanıcılarınıza web sayfaları görüntüleme imkanı sağlar. Fakat tam anlamıyla bir browser değildir, çünkü adres çubuğu, favoriler tablar falan içermez. Html’in