2012-06-19 23 views
7

Resim ve TextBlock içeren yığın yığınlarım var. çift ​​tıklama kullanıcı tarafından yapılıyorsa bir kez bir olayı büyütüyorum (PS -.. Ben StackPanel ekliyorum ve çocukların (Görüntü ve bu konularda programlama yoluyla eğer TextBlock)Bir öğenin alt öğelerini nasıl edinebilirim? WPF

Şimdi var, ihtiyacım TextBlock elemanını stackpanel'den almak için, bunu DataBinding kullanarak yapmam gerektiğini anlıyorum, ancak WPF'ye yeni bir başlangıç ​​yapıyorum ve web'de bununla ilgili hiçbir örnek bulamadım. açıklama, çok teşekkür ederim!

(bir süre önce veri bağlama öğrendik).

+0

Neden StackPanel ve çocuklarını programsal olarak ekliyorsunuz? Şanslar, Xaml'de istediklerinizi elde edebilmeniz ve tıklamaları bir komuta bağlayabilmeniz veya TextBlock'a isme göre referans vermeniz açısından iyidir. –

+0

@MichaelGraczyk Veritabanından görüntülediğim verileri (örn. - stackpanel) veriyorum. – idish

+0

Neredeyse UI öğelerini koddan eklemek zorunda kalmazsınız. Çalışma zamanı sırasında UI değişmezse, koddan herhangi bir UI öğesi eklememelisiniz. Öğelere x: Name yönergesi ile bir ad verebilir ve ardından bu adla arkadaki koddan erişebilirsiniz. –

cevap

17

Basit şekilde yapmaya pek çok yoluvar şudur:

var textBlock = panel.Children.OfType<TextBlock>().FirstOrDefault(); 

Eğer yoksa, ilk TextBlock veya null'u alabilirsiniz.

+0

Mükemmel! İşe yarıyor! Çok teşekkür ederim! – idish

0

Sen TextBlockText (?) Elemen databind gerekir sınıfınıza t - şöyle:

XAML

sınıfında
<TextBlock x:Name="MyTextBlock" 
    Text={Binding ShowThis, Mode=OneWay} /> 

yılında:

public class MyDataContextClass 
{ 
    private string showThis = string.Enpty; 
    public string ShowThis 
    { 
     get {return showThis;} 
     set 
     { 
       showThis = value; 
       if (PropertyChanged != null) 
        PropertyChanged(....); 
     } 
     } 
    } 

ve sınıfa DataBing Xaml gerekir. (? Oluşturucu içinde olabilir)

public class MyXamlWindow 
    { 
     public MyXamlWindow() 
     { 
      this.DataContext = new MyDataContextClass(); 
     } 
    } 

belirli türde (örneğin TextBlock) ilk alt öğesi almanın her şeyden

+0

Ve tabiki sadece TextBlock'a erişmek istiyorsa, x: Name => MyTextBlock'u kullanabilir. – astreal

İlgili konular