2017-07-03 4 views
0

Comment puis-je accéder à un bloc de texte à l'intérieur d'un Stackpanel qui se trouve dans un ListBoxItem?WPF C# Récupère du texte à partir d'un bloc de texte à l'intérieur d'un ListBoxItem

Par exemple:

ListBoxItem MyItem = new ListBoxItem(); 
StackPanel StackPnl = new StackPanel(); 
TextBlock Title = new TextBlock(); 

Title.Text = "Item 1"; 

StackPnl.Children.Add(Title); 
MyItem.Content = StackPnl; 

Comment puis-je accéder à plus tard la propriété Text de cette Textblock avec Listbox.SelectedItem?

+0

que diriez-vous '((MyItem.Content comme StackPanel) .Enfants [0] comme TextBlock) .Text = "foo"' 'ou simplement Title.Text = "toto"' ? –

+1

Gardez une référence à TextBlock pour une utilisation ultérieure? Pourquoi voulez-vous faire ça du tout? Et pourquoi créez-vous ces éléments dans le code au lieu de définir le ItemTemplate de ListBox dans XAML et lier la propriété TextBlock Text à une propriété d'élément de modèle de vue? – Clemens

Répondre

1

Essayez ceci:

//listBox1 is your ListBox 
ListBoxItem MyItem = listBox1.SelectedItem as ListBoxItem; 
if(MyItem != null) 
{ 
    StackPanel sp = MyItem.Content as StackPanel; 
    if(sp != null && sp.Children.Count > 0) 
    { 
     TextBlock textBlock = sp.Children[0] as TextBlock; 
     if(textBlock != null) 
     { 
      string text = textBlock.Text; 
     } 
    } 
} 
+0

Merci mon mec :) – Pappkasse