首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ListBox.SelectedItem

ListBox.SelectedItem
EN

Stack Overflow用户
提问于 2012-06-20 07:12:38
回答 2查看 4.6K关注 0票数 3

我有一个包含填充TextBoxes的项目的ListBox。如何识别从ListBox中进行选择时选择的文本字符串。下面是我的ListBox的XAML代码

代码语言:javascript
复制
<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方法中尝试了所有的东西。这是最新的一条:

代码语言:javascript
复制
object selectedItem = ScenarioList.SelectedItem;
ListBoxItem selected = this.ScenarioList.ItemContainerGenerator.ContainerFromItem(this.ScenarioList.SelectedItem) as ListBoxItem;
string tempStr = selected.Content.ToString();
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-06-20 07:20:46

代码语言:javascript
复制
ListBoxItem listBox_Item = listBox.SelectedItem as ListBoxItem;
MessageBox.Show("You have selected " + listBox_Item.Content.ToString());

或者您可以在Selection changed事件上尝试此选项

代码语言:javascript
复制
 private void ScenarioList_SelectionChanged(object sender, SelectionChangedEventArgs e) 
  {
        if (((ListBox)sender).SelectedItem != null)
        MessageBox.Show("You have selected " + (ListBox)sender).SelectedItem);
  }
票数 2
EN

Stack Overflow用户

发布于 2012-06-20 07:31:16

你可以这样做:

代码语言:javascript
复制
var selectedText = ((TextBlock)((ListBoxItem)ScenarioList.SelectedItem).Content).Text

你也可以从SelectionChangedEventArgs获取它,类似于:

代码语言:javascript
复制
public void ScenarioList_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    var item = e.AddedItems[0] as ListBoxItem;
    var selectedText = ((TextBlock)item.Content).Text;
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11110778

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档