簡體   English   中英

ListBox.SelectedItem

[英]ListBox.SelectedItem

我有一個ListBox其中包含填充TextBox項目。 如何識別從ListBox進行選擇時選擇的文本字符串。 這是我的ListBox XAML代碼:

<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();
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);
  }

可以這樣做:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM