2012-06-19 62 views
3

我有一个ListBox与项目,填写TextBox es。如何识别从ListBox进行选择时所选的文本字符串。这里是我的ListBox XAML代码:ListBox.SelectedItem

<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
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

可以做这样的:

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; 
} 
+0

Nathan,谢谢,那就是票。奇迹般有效。 Lotsa parens,我将不得不研究一下才能理解。再次感谢。 –

相关问题