Panorama Control etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
Panorama Control etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

2 Ocak 2011

Windows Phone 7 de Touch, Multi-Touch Inputs (Dokunmatik-Girişler)

Teknolojik bir gelişme ya da buluş, bereberinde çok farklı alanların da gelişmesinin tetikleyicisi olmuştur. Bu gelişme, özellikle insan duyu organları ile daha çok hissedilebilir türden bir gelişme ise son kullanıcılar tarafından yaygınlaşması ve popüleritesi de o oranda çok olmaktadır. Son yıllarda touch screen (dokunmatik ekran) ya da özellikle multi-touch screen 'in (çoklu-dokunmatik ekran) gelişmesi ile birlikte telefon dünyasına da bu özelliklerin hızla girdiğini ve bu tür özellikleri destekleyen uygulamaların da gün geçtikçe çoğaldığını gözlemlemekteyiz. Bu makalemizde bir Windows Phone 7 uygulaması ile touch ve multi-touch ekran özelliklerini incelemeye çalışacağız. Öncelikle hangi tür touch ve multi-touch özelliklerin kullanıldığına göz atalım. (Bu özelliklere literatürde geçtiği gibi Gestures (el hareketleri) olarak adlandıracağız.)

Tap Gesture
Kullanıcının ekrana dokunması ve hemen elini çekmesiyle elde edilir. Ekran üzerindeki pek çok kontrol bu event ile çalışmaktadır. Mouse ile sıkça kullandığımız click event'ıyla aynı özelliktedir. Kullanıcı tarafından
bilinen en temel dokunma türüdür.

Double-Tap Gesture
Çok kısa bir zaman dilimi içerisinde Tap gesture'ın tekrar etmesi ile elde edilen harekettir. Çoğu zaman bu gesture da kullanılmaktadır. Ard arda hızlıca iki kez dokunma da diyebiliriz. 2 dokuma arası yaklaşık olarak 1sn veya daha az bir süre olmalıdır.

Pan Gesture
Ekrana parmağımızı koyup parmağın hareket ettirilmesi ile sağlanan harekettir. Örneğin bir resmin touch screen üzerindeki hareketi/yer değiştirmesi bu event'ın yakalanması ile sağlanabilir. Ya da windows phone giriş ekranında bulunan bir tile, öncelikle seçilir daha sonra da pan gesture ile yeri değiştirilebilir. Desktop
uygulamalarında mouse ile kullandığımız Drag and Drop ile benzer işlevdedirler.

Flick Gesture
Parmağımızı touch-screen üzerinde belirli bir yönde hızlıca hareket ettirerek elde edilen harekettir. Örneğin bir Windows Phone list kontrol üzerinde parmağımızı aşağı veya yukarı yönde hareket ettirdiğimizde list box item'ların da o yönde hareket ettiğini hatta parmağımızı çektiğimizde bir süre daha list box item'ların o yönde hareket ettiğini görebiliriz.

Tap and Hold Gesture
Kullanıcı ekrana dokunur, aynı noktada belirli bir süre parmağını bekletir, bir süre sonra bir context menünü açılır. Windows Mobile işletim sistemli cihazlardan da anımsayacağımız gibi bu event mouse sağ click event'ı elde etmek için kullanılır.

Multi-Touch Gesture (Pinch and Stretch)
Kullanıcının ekranın birden fazla yerine aynı anda dokunarak elde ettiği harekettir. Örneğin yaygın olarak kullanımı bir içeriği veya resmi zoom-in veya zoom-out yapmak için kullanılır.





Windows Phone 7 Developer Tools ile Gestures yakalayabilmenin oldukça kolay olduğunu birazdan örnek kodlarla inceleyeceğiz. Şimdi örneklerle en temel gesture'dan başlayarak incelemeye başlayalım.

Tap Gesture Örneği
Windows Phone Developer Tools ile birlikte gelen component'lerin tümünde click event'ı yer almadığı için bu örneğimizde click event'ı olmayan bir component üzerinden kendi TapEvent'ımızı oluşturacağız. Tabiki bu component için mouse-down ve mouse-up gibi eventlardan faydalanacağız. İlk örneğimizi geliştirmeye başlayalım. Şimdi Visual Studio / File / New Project / Silverlight for Windows Phone / Windows Phone Application seçerek phone projemizi oluşturalım. Default olarak gelen MainPage.xaml içeriğini aşağıdaki gibi
oluşturalım. Örnek nesne olarak bir button ve bir de border nesnelerini kullanacağız.Button nesnesi kendi içerisinde click event'a sahip durumda fakat border için custom bir sınıf oluşturacağız. Bu sınıfı daha sonra yalnızca border nesnesi ile değil dilediğimiz kontrol'e bir Behavior olarak ekleyebilir olacağız.
Sınıfımızı TapAction olarak isimlendirelim ve base sınıf olarak Behavior jenerik sınıfından türetelim. Jenerik tip olarak tabiki UIElement kullanacağız.

Dikkat etmemiz gereken önemli bir nokta da Behavior base sınıfını kullanabilmek için referans olarak eklememiz gereken System.Windows.Interactivity.dll dir.























C#
public class TapAction : Behavior<UIElement>
{
    public event EventHandler Tap;
    protected bool MouseDown { getset; }
 
    protected override void OnAttached()
    {
        base.OnAttached();
        this.AssociatedObject.MouseLeftButtonDown +=AssociatedObject_MouseLeftButtonDown;
        this.AssociatedObject.MouseLeftButtonUp += AssociatedObject_MouseLeftButtonUp;
    }
 
    protected override void OnDetaching()
    {
        this.AssociatedObject.MouseLeftButtonDown -= AssociatedObject_MouseLeftButtonDown;
        this.AssociatedObject.MouseLeftButtonUp -= AssociatedObject_MouseLeftButtonUp;
        base.OnDetaching();
    }
 
    private void AssociatedObject_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
    {
        MouseDown = true;
    }

    private void AssociatedObject_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
    {
        if (MouseDown)
        {
            OnTap();
        }
        MouseDown = false;
    }
 
    protected virtual void OnTap()
    {
        if (Tap != null)
        {
            Tap(this.AssociatedObject, EventArgs.Empty);
        }
    }
}
Yukarıdaki kod satırlarını inceleyecek olursak base sınıfımızın OnAttached methodunu override ederek mouse-down ve mouse-up event handler'larını ekliyoruz. Tap isimli event'ımız da mouse-down olduğunda tetiklenecektir. TapAction sınıfımızı oluşturduktan sonra MainPage.xaml içerisine nesnelerimizi ve ilişkili 
olacakları behavior tanımlamalarını ekleyelim.

XAML
<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
        <Border x:Name="border_1" 
          BorderBrush="#FFF5C013" BorderThickness="10" 
          HorizontalAlignment="Left" VerticalAlignment="Top"
          Margin="39,42,0,0" Height="111" Width="142">
                <i:Interaction.Behaviors>
                   <local:TapAction x:Name="myTapAction" Tap="myTapAction_Tap"/>
                </i:Interaction.Behaviors>
        </Border>
        <Button Name="button_1" 
                    Content="Button" 
                    Height="72" 
                    HorizontalAlignment="Left" 
                    Margin="235,63,0,0"  VerticalAlignment="Top" Width="160" Click="button_1_Click" />
        </Grid>

Yukarıdaki xaml kodlarına dikkat edecek olursak button nesnesinin Click event'ı Border nesnesinin ise kodsal olarak oluşturduğumuz Tap event'ı kullanılacak. TapAction behavior'ı da Expression Blend tarafına geçerek de ekleyebiliriz.






MainPage.cs içerisinde myTapAction_Tap ve button_1_Click event handler içerisine örnek messagebox görüntüleyecek kod satırlarımızı da ekledikten sonra F5 ile uygulamamızı çalıştırarak sonuçlara birlikte göz atabiliriz.

C#
public partial class MainPage : PhoneApplicationPage
{
    public MainPage()
    {
        InitializeComponent();
    }
    private void button_1_Click(object sender, RoutedEventArgs e)
    {
        MessageBox.Show("Tap Event Button üzerinden gerçekleşti.");
    }
 
    private void myTapAction_Tap(object sender, EventArgs e)
    {
        MessageBox.Show("Tap Event Border üzerinden gerçekleşti.");
    }
}








Double-Tap Gesture Örneği
Yukarıda kullandığımız örneğe benzer şekilde DoubleTapAction sınıfını da TapAction sınıfından miras alarak kolaylıkla yazabiliriz. Double-Tap Action yazarken 2 Tap arasında geçen kısa zaman dilimi (1 sn) kontrol edilerek geliştirilmelidir. 2 tap arasındaki sürenin 1 sn olduğunu kontrol edebilmek için öncelikle 1. Tap Action gerçekleştiğinde ne zaman gerçekleştiğini bir değişken de tutarak eğer yeni bir Tap Action gerçekleşir ise değişken de tutuğumuz zaman ile karşılaştırıp 1sn'den küçük ise DoubleTap event'ı oluşturabiliriz.

C#
public class DoubleTapAction : TapAction
{
    public event EventHandler DoubleTapEvent;
    protected DateTime? FirstTapTimeValue { getset; }
    public int DoubleTapTimeoutInMilliseconds
    {
        get { return (int)GetValue(DoubleTapTimeoutInMillisecondsProperty); }
        set { SetValue(DoubleTapTimeoutInMillisecondsProperty, value); }
    }
    public static readonly DependencyProperty
    DoubleTapTimeoutInMillisecondsProperty = DependencyProperty.Register("DoubleTapTimeoutInMilliseconds"typeof(int),typeof(DoubleTapAction),new PropertyMetadata(1000));
    protected override void OnTap()
    {
        base.OnTap();
        if (FirstTapTimeValue.HasValue && FirstTapTimeValue.Value.AddMilliseconds(DoubleTapTimeoutInMilliseconds) > DateTime.Now)
        {
            OnDoubleTap();
            FirstTapTimeValue = null;
        }
        else
        {
            FirstTapTimeValue = DateTime.Now;
        }
    }
    protected virtual void OnDoubleTap()
    {
        if (DoubleTapEvent != null)
        {
            DoubleTapEvent(this.AssociatedObject, EventArgs.Empty);
        }
    }
}
Pan, Flick, TouchAndHold Gestures Örnekleri (Silverlight for Windows Phone Toolkit ile)


Şimdiye kadar örneklendirdiğimiz Tap ve DoubleTap'den farklı olarak Pan, Flick ve Hold Gesture' ları yakalayabilmek içim daha fazla kod ve sınıf eklemeden Silververlight for Windows Phone Toolkit' den faydalanacağız. Bu Toolkit indirilip kurulduktan sonra Gestures ile ilgili örnek kaynak kodlara da erişilebilir. İlgili Toolkit'i indirmek için http://silverlight.codeplex.com/ adresinden download silverlight on WP7 tıklanarak erişilebilir.

Silverlight on Windows Phone Toolkit kurulumu tamamlandıktan sonra projemize ilgili dll referansını da eklemeyi unutmayalım.







XAML
xmlns:toolkit="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone.Controls.Toolkit"

XML namespace bölümüne yukarıdaki xaml kod satırında olduğu gibi toolkit olarak isimlendirdiğimiz namespace'i ekliyoruz. Toolkit Controls altında bulunan GestureListener isimli sınıfdan faydalanacağız.
Şimdi MainPage.xaml içerisine bir Canvas kontrol ekleyerek Pan, Flick ve Hold event' ları yakalamaya çalışalım.

XAML
<Canvas Background="Aqua"
        Height="124" 
        HorizontalAlignment="Left" 
        Margin="76,256,0,0" 
        Name="canvas1" 
        VerticalAlignment="Top" 
        Width="218">
    <toolkit:GestureService.GestureListener>
        <toolkit:GestureListener DragDelta="GestureListener_DragDelta"
                                 Flick="GestureListener_Flick"
                                 Hold="GestureListener_Hold" 
                                  />
    </toolkit:GestureService.GestureListener>
</Canvas>

C#
private void GestureListener_DragDelta(object sender, DragDeltaGestureEventArgs e)
{
    double horizontalChange = e.HorizontalChange;
    canvas1.Margin = new Thickness(canvas1.Margin.Left + horizontalChange, canvas1.Margin.Top, canvas1.Margin.Right, canvas1.Margin.Bottom);
}
 
private void GestureListener_Hold(object sender, GestureEventArgs e)
{
    resultText.Text = "Hold: Canvas üzerinde bir süre basılı tutuldu.";
}
 
private void GestureListener_Flick(object sender, FlickGestureEventArgs e)
{
    resultText.Text = string.Format("{0} Flick: Angle {1} Velocity {2},{3}",
        e.Direction, Math.Round(e.Angle), e.HorizontalVelocity, e.VerticalVelocity);
}
Uygulamamızı F5 ile çalıştırarak sonucu emulatör üzerinden mouse yardımıyla izleyelim. Öncelikle Hold hareket için, Aqua renk olan Canvas kontrol üzerinde mouse pointer'ı bir süre basıl tutalım, ardından tekrar mouse yardımıyla Flick hareketleri yakalayacağız. Bu iki denemeden sonra DragDelta içindeki kod satırlarının çalışması için Pan hareket ile canvas1 isimli Canvas nesnemizi yatay eksende hareket ettireceğiz.


























Yukarıdaki resimlerde de görüleceği üzere en son yaptığımız Pan hareketle canvas nesnesinin yerini yatayda soldan sağa doğru kaydırdık fakat aynı zamanda Pan hareketinin sonlanması ile birlike Horizantal Flick hareketinde oluştuğunu gözlemleyebiliriz. Buradan şu sonucu çıkarabiliriz: 2 tür Flick hareket vardır.
Bunlardan ilki Pan hareketin sonunda otomatik olarak oluşan Flick, diğeride kendimizin bilinçli olarak oluşturduğu Flick hareketi.

Multi-Touch Gestures Örnekleri

Windows Phone 7 cihazımız var ise Pinch hareket başladığında, hareket halindeyken ve hareket sonlandığında hız, açı ve x,y pozisyonu değerlerini elde etmek oldukça kolay olacaktır. Multi-touch özelliği Windows Phone Emulatör üzerinden de simule etme şansımız var. Simulasyon için öncelikle bilgisayarımızın işletim sisteminin Windows 7 olması gerekiyor. Ekranınız multi-touch özellikte ise ayrıca yeni bir yapılandırmaya gerek kalmadan emulatör üzerinden deneyebilirsiniz. Eğer ekranınız multi-touch özelliğe sahip değilse de
bilgisayarınızın diğer usb girişine de mouse takarak multi-touch simulasyonu gerçekleştirme
şansımız olacak.

Bu simulasyon için öncelikle codeplex.com adresinden Multi-Touch Vista projesini download etmemiz gerekiyor. Sitenin ana sayfasındaki örnek video ile kurulum adımlarını inceleyebilirsiniz.

Multi-Touch Vista http://multitouchvista.codeplex.com/ adresinden ulaşılabilir.















Multi-Touch Vista'yı bilgisayarınıza indirdikten sonra yapılması gerekenleri kısaca sıralamak gerekirse;

1. Command Prompt'u administrator modda açın.
2. İndirilen klasörü açıp işlemcinize göre Driver\32x veya Driver\64x klasörüne gidin.
3. Install Driver komut dosyasını çalıştırın. Güvenlik ile ilgili adımda Install this driver seçeneğini seçiniz.
4. Bilgisayarınızın Aygıt Yöneticisi / İnsan Arabirim Aygıtları / Universal Software HID device'ı görün. Disable ve tekrar Enable yapın.
5. Start menüden "kalem ve dokunma" (pen and touch) olarak arayın. Bu uygulamayı
çalıştırın. Gelen pencerenin "Dokun" (Touch) sekmesine geçerek "Dokunma işaretçisini göster" checkbox seçeneğini seçiniz ve Tamam diyerek bu pencereyi kapatalım.
6. İndirilen klasörü tekrar açıp Multitouch.Service.Console.exe'yi çift tıklayarak çalışır durumda bırakalım.
7. Aynı klasörde bulunan Multitouch.Driver.Console.exe'yi çift tıklayarak çalışır durumda bırakalım. USB'den takdığımız mouse kadar kırmızı nokta göreceğiz.
8. Son olarak Multitouch.Configuration.WPF.exe'yi de çalıştırarak "configurasyon" butonunu seçiniz. Default mouse işaretçisini de burada kaldırıyoruz. Artık multi-touch simulasyonumuz hazır durumda. :)




Kalem ve Dokunma uygulaması içerisinden "Dokun" sekmesine geçin.








































Dokunma işaretçisi seçildikten sonra "Tamam" butonu ile çıkalım. Multi-Touch Vista console uygulamalarının da aşağıdaki gibi açık durumda olması gerekecektir.






Bilgisayarımızda Multi-Touch özelliği simule ettikten sonra tekrar Windows Phone 7 projemize geri dönerek kaldığımız yerden devam edelim. Multi-Touch hareketleri 2 adet usb mouse kullanarak Emulatör üzerinden yakalayacağız. Öncelikle MainPage.xaml'da bulunan Canvas nesnemizi aşağıdaki gibi yeniden düzenleyelim.

XAML
<Canvas Background="Aqua"
        Height="124" 
        HorizontalAlignment="Left" 
        Margin="76,256,0,0" 
        Name="canvas1" 
        VerticalAlignment="Top" 
        Width="218">
    <toolkit:GestureService.GestureListener>
        <toolkit:GestureListener DragDelta="GestureListener_DragDelta"
                                 Flick="GestureListener_Flick"
                                 Hold="GestureListener_Hold" 
                                 PinchStarted="GestureListener_PinchStarted"
                                 PinchDelta="GestureListener_PinchDelta"
                                 PinchCompleted="GestureListener_PinchCompleted"/>
    </toolkit:GestureService.GestureListener>
    <Canvas.RenderTransform>
        <CompositeTransform x:Name="myTransform"/>
                </Canvas.RenderTransform>
</Canvas>

Multi-Touch hareketleri PinchStarted, PinchDelta ve PinchComplated event handler ile elde edeceğiz.

C#
private double initialAngle;
private double initialScale;
 
private void GestureListener_PinchStarted(object sender, PinchStartedGestureEventArgs e)
{
    canvas1.Background = new SolidColorBrush(Colors.Green);
    initialAngle = myTransform.Rotation;
    initialScale = myTransform.ScaleX;
}
private void GestureListener_PinchDelta(object sender, PinchGestureEventArgs e)
{
    myTransform.Rotation = initialAngle + e.TotalAngleDelta;
    myTransform.ScaleX = myTransform.ScaleY = initialScale * e.DistanceRatio;
}
private void GestureListener_PinchCompleted(object sender, PinchGestureEventArgs e)
{
    canvas1.Background = new SolidColorBrush(Colors.Blue);
}
Tekrar F5 ile Emulatör üzerinden projemizi çalıştırarak multi-touch özelliği Pinch hareket ile elde etmeye çalışalım.


































Dokunmatik giriş türlerini kullanmak, cihaza özgü donanımsal özelliklerden faydalanmak hem uygulamalarımızı daha güçlü ve farklı bir hale getirecek hem de son kullanıcılar tarafından daha çok tercih edilir yapacaktır. Kendi özel uygulamalarımız dışında da Windows Phone 7 ile internet explorer üzerinden gezindiğimizde de otomatik olarak touch özelliklerin aktif durumda olduğunu gözlemleyebiliriz.
Bu makalemizde, kullanımı son derece basit olan GestureListener mekanizmasını ve Behavior sınıfından türeyen örnek TapAction ve DoubleTapAction sınıfları yardımıyla dokunmaları yakaladık. Windows Phone için ayrıca XNA Touch Panel ve Silverlight'ın kendi manipulasyonlarıyla da Touch girişler kullanılmaktadır. Dilerim faydalı bir makale olmuştur.. Bir sonraki makalemizde görüşmek üzere.
Kolay gelsin.

http://msdn.microsoft.com/en-us/library/microsoft.xna.framework.input.touch.gesturetype.aspx

http://msdn.microsoft.com/en-us/library/gg490775.aspx
http://multitouchvista.codeplex.com/
http://silverlight.codeplex.com/


Gökhan Manduz
gokhanmanduz.blogspot.com

gokhanmanduz@hotmail.com
gmanduz@gmail.com

14 Kasım 2010

Windows Phone' da Panorama ve Pivot Control

Merhaba, bu yazımızda Windows Phone ile çalışmaya devam edeceğiz. Windows Phone uygulamalarımız için ekran görüntülerine veya bir takım fotoğraflara çok daha hızlı yollardan erişebilme olanağını Pivot Control kullanımı ile sağlayacağız. Ya da windows phone ekran görüntüsü sınırlarının ötesine taşan büyükçe fotoğraflarımızı, fotoğrafın görüntü kalitesini kaybetmeden, yatay düzlemde, parmakla kaydırarak, rahatça izleyebilme imkanına da Panorama Control ile sağlamış olacağız. Panorama Control ile fotoğrafımızı yatayda kaydırarak görme şansı elde ederken, aynı zamanda verilerimizi veya istediğimiz nesneleri de bu kontrol üzerinde görüntüleyebilme şansımız da olacak.

Şimdi sırasıyla bu kontrollere örneklerle göz atacağız fakat öncesinde eğer pc'mizde 'Windows Phone Developer Tools Beta' kurulu ise, kaldırarak, en son sürüm 'Windows Phone Developer Tools' kurmalıyız.

'VS 2010 / File / New Project / Silverlight For Windows Phone / Windows Phone Application' projesi ekleyerek örneğimizi hazırlamaya başlayalım.


XAML

<Grid x:Name="LayoutRoot" Background="Transparent">

<Grid.RowDefinitions>

<RowDefinition Height="Auto"/>

<RowDefinition Height="*"/>

Grid.RowDefinitions>

<TextBlock Grid.Row="0" Text="Panaroma and Pivot Control Main Page" Margin="10" FontSize="24"/>

<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">

<Button x:Name="btnPanaroma" Content="Panaroma Control" Height="72"HorizontalAlignment="Left" Margin="62,74,0,0" VerticalAlignment="Top" Width="321" Click="btnPanaroma_Click" />

<Button x:Name="btnPivot" Content="Pivot Control" Height="72" HorizontalAlignment="Left" Margin="62,150,0,0" VerticalAlignment="Top" Width="321" Click="btnPivot_Click" />

Grid>

Grid>

C#

private void btnPanaroma_Click(object sender, RoutedEventArgs e) {

NavigationService.Navigate(new Uri("/PanoramaPage.xaml", UriKind.Relative));

}

private void btnPivot_Click(object sender, RoutedEventArgs e) {

NavigationService.Navigate(new Uri("/PivotPage.xaml", UriKind.Relative));

}




Windows Phone 7

Eklediğimiz windows phone projesi üzerine sağ tıklayarak, projemize Panorama ve Pivot kontrollerimizi ekleyelim. 'Proje Sağ Click / Add New Item / Windows Phone Panorama Page'.

Panorama Control

Adından da anlaşılacağı üzere panoramik fotoğraflarımızı rahatlıkla gösterebilecek, aynı zamanda üzerinde istediğimiz nesneleri (veri, fotoğraf, liste v.s) de gösterebileceğimiz bir kontroldür. Parmakla soldan sağa veya yukarıdan aşağıya doğru kaydırarak fotoğraf üzerinde dolaşabiliriz.

Windows Phone 7

Aşağıdaki şekilden de görüldüğü gibi panorama control'e istediğimiz bir panoromik fotoğraf eklenebilecek bir alan, üst kısımda bir başlık, başlığın altında 'Item' bölümü bulunmaktadır. 'Item' bölümü header ve content'den oluşur. Sağa doğru her kaydırma hareketinde diğer Item bölümüne geçiş sağlanacaktır.

Windows Phone 7

Panorama Page Template ile sayfamızı ekledikten sonra aşağıdaki gibi panorama sayfamızı oluşturalım.
XAML

<Grid x:Name="LayoutRoot">

<controls:Panorama Title="Balçova'dan İzmir Manzarası" FontSize="16">

<controls:Panorama.Background>

<ImageBrush ImageSource="/PanaromaAndPivotApp;component/Images/izmir_balcova_tarafindan.png" />

controls:Panorama.Background>

<controls:PanoramaItem Header="Özet Bilgi" Orientation="Horizontal">

<Grid>

<StackPanel>

<TextBlock Text="Balçova doğa yürüyüşü." FontSize="22"/>

<TextBlock Text=" "/>

<TextBlock Text="Toplam Uzunluk 20 km, Toplam Zaman 7 saat" FontSize="22" TextWrapping="Wrap"/>

StackPanel>

Grid>

controls:PanoramaItem>

<controls:PanoramaItem Header="Getirilmesi Gerekenler" FontSize="14" Orientation="Horizontal">

<Grid>

<StackPanel>

<TextBlock Text="1- Sırtta taşınabilir bir çanta" FontSize="22"/>

<TextBlock Text="2- Ağzı vidalı Su Taşıma Kabı" FontSize="22"/>

<TextBlock Text="3- Kuru Üzüm – Kayısı ve/veya çikolata" FontSize="22"/>

<TextBlock Text="4- Ana Mola için hafif yiyecekler" FontSize="22"/>

<TextBlock Text="5- Taşta Sucuk Molası için 1 kangal sucuk/" FontSize="22"/>

StackPanel>

Grid>

controls:PanoramaItem>

<controls:PanoramaItem Header="KURALLAR:" FontSize="14" Orientation="Horizontal">

<Grid>

<StackPanel>

<TextBlock Text="Bu etkinlik her türlü hava koşulunda gerçekleştirilecektir." FontSize="18"/>

<TextBlock Text="Yürüyüşe katılan her bir kişi rehberin talimatlarına uymak zorundadır." FontSize="18"/>

<TextBlock Text="Yürüyüşe katılan kişiler rehberi geçmemelidir." FontSize="18"/>

<TextBlock Text="Yürüyüşçü yürüyüşün bir yarış olmadığını daima hatırlamalıdır." FontSize="18"/>

<TextBlock Text="" FontSize="22"/>

StackPanel>

Grid>

controls:PanoramaItem>

controls:Panorama>

Grid>


Windows Phone 7


Pivot Control

Pivot kontrol, panorama kontrolüne oldukça çok benzemektedir. Bu kontrolde de ana pivot kontrol içerisine Item'lar ekleyip, parmakla rahatlıkla kullanım elde edebiliriz. Örnek bir pivot page üzerinden pivot kontrolü tanımaya çalışalım.

Windows Phone 7

Örnek bir pivot page üzerinden pivot kontrolü tanımaya çalışalım.

XAML

<Grid x:Name="LayoutRoot" Background="Transparent">

<controls:Pivot Title="KİTAPÇI">

<controls:PivotItem Header="Kitap Özeti">

<Grid>

<StackPanel Margin="10">

<TextBlock Text="Adı"/>

<TextBlock Text=" "/>

<TextBlock Text="Microsoft Mobile Development Handbook" TextWrapping="Wrap" />

<TextBlock Text=" "/>

<TextBlock Text="Özet"/>

<TextBlock Text="This Book is for new and existing mobile application developers who already have some experience developning applications using the .Net Framework" TextWrapping="Wrap" />

StackPanel>

Grid>

controls:PivotItem>

<controls:PivotItem Header="Yazar">

<Grid>

<StackPanel Margin="10">

<TextBlock Text="YAZARI"/>

<TextBlock Text=" "/>

<TextBlock Text="Andy Wigley"/>

<TextBlock Text="Daniel Moth"/>

<TextBlock Text="Peter Foot"/>

StackPanel>

Grid>

controls:PivotItem>

<controls:PivotItem Header="Detaylar">

<Grid>

<Grid.RowDefinitions>

<RowDefinition Height="*"/>

<RowDefinition Height="*"/>

Grid.RowDefinitions>

<Image Grid.Row="0" Margin="10" Source="/PanaromaAndPivotApp;component/Images/kitap_kapagi.png" />

<TextBlock Text="PUBLISHED BY Microsoft Press A Division Of Ms Corporation Redmond, Washington... " Grid.Row="1" Margin="10" TextWrapping="Wrap" />

Grid>

controls:PivotItem>

controls:Pivot>

Grid>

Xaml kodlarımızı da tamamladıktan sonra ana sayfadaki Pivot Control butonuna tıkladığımız aşağıdaki gibi pivot kontrolleri ve item'larımızı göreceğiz.

Windows Phone 7

Ekranlar arasında kolayca gezebilme olanağını yakalamış olduk. Yukarıdaki örnekte görüleceği üzere bir kitap tanıtımını yapmak için konuları pivotitem'lara bölerek her bir pivot item'da kitaba ait farklı bir konuyu gösterdik. Kullanıcılar bu item'lar arasında kolaylıkla parmakla kaydırarak geçiş yapabilecek ve hazırladığımız uygulama kullanım kolaylığı ve rahatlığı açısından tercih edilir olacaktır.

Kolay gelsin.