LIstbox Selected Item content to textblock

Sono certo che c’è una soluzione semplice a questo, ma non riesco a trovarlo al momento.

Sto cercando di decapitare il contenuto della casella di selezione in un blocco di testo come testo utilizzando il codice seguente.

private void SelectionToText(object sender, EventArgs e) { ListBoxItem selection = (ListBoxItem)TextListBox.SelectedItem; selectionText.Text = "This is the " + selection; } 

Per qualche motivo, il blocco di testo viene semplicemente visualizzato

“Questo è System.Windows.Controls.ListBoxItem”

Inizialmente pensavo che fosse perché non mi ero convertito in una stringa, ma non funzionava neanche.

Eventuali suggerimenti?

È ansible fare riferimento alla proprietà Content di ListBoxItem

 selectionText.Text= "This is the " + selection.Content.ToString(); 
 string selText = selection.Items[selection.SelectedIndex].Text; 

Puoi creare una class personalizzata

 public class MyListBoxItem { public MyListBoxItem(string value, string text) { Value = value; Text = text; } public string Value { get; set; } public string Text { get; set; } public override string ToString() { return Text; } } 

Aggiungi elementi al tuo ListBox come:

 listBox1.Items.Add(new MyListBoxItem("1", "Text")); 

E questo funzionerà

 private void SelectionToText(object sender, EventArgs e) { MyListBoxItem selection = (MyListBoxItem)TextListBox.SelectedItem; selectionText.Text = "This is the " + selection; } 

Se non sbaglio, devi fare il seguente codice

 Convert.ToString(TextListBox.SelectedItem); 

Questo restituirà il valore di SelectedItem

Per favore scrivi come questo:

 private void SelectionToText(object sender, EventArgs e) { MyListBoxItem selection = (MyListBoxItem)TextListBox.SelectedItem; selectionText.Text = "This is the " + selection.Content.ToString(); } 

Oppure puoi farlo senza codice dietro, in silverlight, legando la proprietà text del textblock alla proprietà selecteditem.content della listbox.

  

Dove lista è il nome del mio ListBox.