Context Menu

Temmuz 2012 | Aleks Mutlu, Mobil Yazılım Uzmanı
Windows Phone ların olmazsa olmazı Context Menuler...
Ne midir bu? Hani üzerine basılı tutunca birden basılı tuttuğunuz şey ile alakalı butonlar beliriyor ya ekranda... İşte odur..

Çok çok kısa bir biçimde nasıl kullanıldığına dair örnek bir kod yazacağım.

Senaryo; Bind edilmiş bir listbox ımız var. Bunun item larına basılı tutunca context menu açılacak ve tıkladığımız seçeneğe göre işlem gerçekleşecek.

XAML
<ListBox x:Name="..." ItemsSource="{Binding}" ....>
<ListBox.ItemTemplate>
<DataTemplate>
<Grid x:Name="LayoutRoot" Width="480" Background="White" ...>
<toolkit:ContextMenuService.ContextMenu>
<toolkit:ContextMenu VerticalOffset="100.0" IsZoomEnabled="False" x:Name="Context">
<toolkit:MenuItem Header="Delete" Tag="{Binding UserID}" Click="Delete_Click"/>
</toolkit:ContextMenu>
</toolkit:ContextMenuService.ContextMenu>
<TextBlock x:Name="TextBlockNameSurname" TextWrapping="Wrap" Text="{Binding NameSurname}"/>
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>

Burada anlaşıldığı gibi bir listbox var, her bir item da isim soyisim yazıyor.

Basılı tutunca tek seçeneği bulununan ve o da delete olan context menumuz açılacak, ona basınca da c# tarafındaki Delete_Click ile işlemimiz yapılacak.

Dikkat edilmesi gereken şey Tag= binding dememiz. Burada amacımız delete e basıldığı zaman, Delete_Click fonkisyonu çalışırken hangi kullanıcıyı silmesi gerektiğini c# tarafında anlatmak.

He bir de gride basılı tutunca çalışmasını istediğimiz için grid in içine yazıyoruz Context ile alakalı kodu.

C#

MenuItem DeleteButton;
private void Delete_Click(object sender, System.EventArgs e)
{
try
{

DeleteButton = sender as MenuItem;
//Delete İşlemleri...
//Burada DeleteButton bizim seçtiğimiz liste elemanının tag ini taşıyor artık.
//Bundan sonrası artık sizin delete kodunuza kalmış. Kişinin userid sine
//DeleteButton.Tag.ToString() ile ulaşabilirsiniz.
}
catch (Exception)
{
}
}

amcalar burada daha geniş kapsamlı anlatmışlar..

gerekirse mesaj atın, yardımcı olmaya çalışırım :)