Windows Phone üstünde tüm objelerin içeriğini temizlemek

Merhabalar, bugün çözümünü denediğim ve çözebildiğim bir kodu gerekmesi ihtimaline karşın sizlerle paylaşmak istiyorum.

Bu kod parçacığı, eğer formumuzda temizlememiz gereken çok sayıda aynı tür obje var ise (örneğin textbox yada textblock) bunların hepsinin bir kerede içeriğinin boşaltılmasını sağlıyor.

Kodumuzu inceleyelim.

Öncelikle bilmeniz gerekenler, “Gridimiz” isimli objenin üstündeki textblockları temizleyeceğiz. Yani, eğer dilerseniz sadece belirli bir objenin barındırdığı objeleri temizleyebilirsiniz, dikkat etmeniz gereken ise temizlemek istediğiniz objeleri barındıran son objenin (örneğin iç içe 10 grid var ise, textblockların birincil olarak üzerine yerleştirilmiş olduğu gridi belirtmeniz gerekir) yazıldığından emin olmanızdır. Normalde Windows Phone 7 formlarında otomatik olarak objeleri LayoutRoot isimli obje üzerine yerleştiriyoruz, ancak siz farklı bir isim veya farklı objeleri farklı objeler üzerine koymuş iseniz buna göre düzenlemeniz gerekmektedir.

Bu kodumuz ise tam olarak Gridimiz isimli grid objesinin üzerinde bulunan tüm TextBlock objelerinin “isminin ne olduğu veya isminin olup olmadığı önemsenmeksizin.Text özelliğini boşaltmaktadır.

[crayon]

//

for (int Sayaç= 0; Sayaç < Gridimiz.Children.Count; Sayaç++)
{
if (Gridimiz.Children[Sayaç].GetType().Name == “TextBlock”) // Gridimiz’in içerisindeki alt objeleri ID numarasına göre sürekli artan Sayaç sayesinde inceliyoruz ve Type’ı TextBlock olanları yakalıyoruz.
{
TextBlock textBlock = Gridimiz.Children[Sayaç] as TextBlock; // Yakaladığımız TextBlock’u işlemek için textBlock adıyla ilişkilendiriyoruz (büyük küçük harf farketmektedir)
textBlock.Text = string.Empty; // Bu alanda da içeriği boşaltıyoruz.
}
}

//

[/crayon]

Etiketler:

"Windows Phone üstünde tüm objelerin içeriğini temizlemek" yazısı için 2 yorum yapılmış.

  1. harun dedi ki:

    Teşekkürler..

  2. .netisyen dedi ki:

    olaya nesne yonelimli yaklasıp, sınıf hiyerarşi sini goz onunde bulundursak:

    [crayon]
    System.Object
    System.Windows.Threading.DispatcherObject
    System.Windows.DependencyObject
    System.Windows.Media.Visual
    System.Windows.UIElement
    System.Windows.FrameworkElement
    System.Windows.Controls.Panel
    System.Windows.Controls.Canvas
    System.Windows.Controls.DockPanel
    System.Windows.Controls.Grid
    System.Windows.Controls.Primitives.TabPanel
    System.Windows.Controls.Primitives.ToolBarOverflowPanel
    System.Windows.Controls.Primitives.UniformGrid
    System.Windows.Controls.StackPanel
    System.Windows.Controls.VirtualizingPanel
    System.Windows.Controls.WrapPanel

    //

    //parametre olarak aldigi kontrole direkt veya dolayli bagli tum kontrolleri tarar
    public void temizle(UIElement kok)
    {
    //kendisene bagli kontroller var mi / ebeveyn bir kontrol mu?
    if (kok is Panel)
    {
    // ‘Chilren’ koleksiyonu panel sinifindan kalitila-gelen bir uyedir
    foreach (UIElement cocuk in (kok as Panel).Children)
    {
    //ozyinemeli cagrim yapilir
    temizle(cocuk);
    }
    }

    else
    {
    // gecerli kontrol textbox mi?
    // ‘is’ operetoru ile kalitsal kontrol yapilir
    if (kok is TextBox)
    {
    (kok as TextBox).Clear();
    }
    }
    }

    [/crayon]

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir