ListBox.SelectedItem - c #, xaml

Я маю ListBox з елементами, які заповнюють TextBoxес. Як я ідентифікую текстовий рядок, який вибирається, коли вибір робиться з ListBox. Ось мій XAML код для ListBox:

<StackPanel x:Name="InputPanel" Orientation="Horizontal" HorizontalAlignment="Left">
<StackPanel>
<TextBlock Text="Input" Style="{StaticResource H2Style}"/>
<TextBlock Text="Select Scenario:" Style="{StaticResource H3Style}"/>
<ListBox x:Name="ScenarioList" Margin="0,0,20,0" HorizontalAlignment="Left" SelectionChanged="ScenarioList_SelectionChanged">
<ListBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Name}"/>
</DataTemplate>
</ListBox.ItemTemplate>
<ListBoxItem x:Name="Scenario1">
<TextBlock Style="{StaticResource ListBoxTextStyle}" Text="1) Pick a single photo" />
</ListBoxItem>
<ListBoxItem x:Name="Scenario2">
<TextBlock Style="{StaticResource ListBoxTextStyle}" Text="2) Pick multiple files" />
</ListBoxItem>
<ListBoxItem x:Name="Scenario3">
<TextBlock Style="{StaticResource ListBoxTextStyle}" Text="3) Pick a folder" />
</ListBoxItem>
<ListBoxItem x:Name="Scenario4">
<TextBlock Style="{StaticResource ListBoxTextStyle}" Text="4) Save a file" />
</ListBoxItem>
</ListBox>
</StackPanel>

Я спробував усілякі речі в своєму selection_changed метод. Ось найновіший:

object selectedItem = ScenarioList.SelectedItem;
ListBoxItem selected = this.ScenarioList.ItemContainerGenerator.ContainerFromItem(this.ScenarioList.SelectedItem) as ListBoxItem;
string tempStr = selected.Content.ToString();

Відповіді:

2 для відповіді № 1
ListBoxItem listBox_Item = listBox.SelectedItem as ListBoxItem;
MessageBox.Show("You have selected " + listBox_Item.Content.ToString());

або Ви можете спробувати це на події, що змінилася Виділенням

 private void ScenarioList_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
if (((ListBox)sender).SelectedItem != null)
MessageBox.Show("You have selected " + (ListBox)sender).SelectedItem);
}

2 для відповіді № 2

ви міг роби це так:

var selectedText = ((TextBlock)((ListBoxItem)ScenarioList.SelectedItem).Content).Text

Ви також можете отримати це від SelectionChangedEventArgs на кшталт:

public void ScenarioList_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
var item = e.AddedItems[0] as ListBoxItem;
var selectedText = ((TextBlock)item.Content).Text;
}