如何在文本块中显示列表框选定项

Posted

技术标签:

【中文标题】如何在文本块中显示列表框选定项【英文标题】:How to display listbox selected item in a textblock 【发布时间】:2018-01-06 15:41:01 【问题描述】:

我有一个列表框,其中使用绑定填充数据,我想将所选列表项中的姓名和年龄显示到下一页中的文本块中。

XAML

<ListBox x:Name="listBoxobj" Background="Transparent" Height="388" Margin="22,0,0,0" SelectionChanged="listBoxobj_SelectionChanged">
            <ListBox.ItemTemplate>
                <DataTemplate>
                    <!--<Border BorderBrush="DarkGreen" BorderThickness="4">-->
                    <Grid>
                        <Grid.RowDefinitions>
                            <RowDefinition Height="auto"/>
                            <RowDefinition Height="auto"/>
                        </Grid.RowDefinitions>
                        <TextBlock  x:Name="txtName1" 
                                    Text="Binding Name" 
                                    Grid.Row="0" 
                                    Width="400" 
                                    Height="40"  
                                    Foreground="White" 
                                    FontSize="20" 
                                    Margin="8,0,-48,0"/>
                        <TextBlock x:Name="Age1" 
                                   Text="Binding Age" 
                                   Grid.Row="1" 
                                   Width="400" 
                                   Height="40"  
                                   Foreground="White" 
                                   FontSize="18" 
                                   Margin="8,0,-48,0"/>
                    </Grid>
                <!--</Border>-->
                </DataTemplate>
            </ListBox.ItemTemplate>
        </ListBox>

我试过这样做,

private void listBoxobj_SelectionChanged(object sender, SelectionChangedEventArgs e)
             
        object  person = listBoxobj.SelectedItem;           
        Frame.Navigate(typeof(Page2), person);        
    

但我不明白如何从 NavigationEventArgs e 获取值以在一个 textBlock 中显示 Name 并在另一个 textBlock 中显示 Age。 数据正在通过这个绑定..

 ObservableCollection<MyData> Details = new ObservableCollection<MyData>();
        Details.Add(new MyData()  LineOne = "Teena", LineTwo = "20" );
        Details.Add(new MyData()  LineOne = "Riya", LineTwo = "21" );
        Details.Add(new MyData()  LineOne = "Priya", LineTwo = "22" );
        Details.Add(new MyData()  LineOne = "kila", LineTwo = "23" );
        this.listBoxobj.ItemsSource = Details;

【问题讨论】:

触发所选项目更改事件并使用参数更新文本块文本。 Rachel,你是否将 ListBox 与某些数据源绑定?对我来说(根据您给定的代码),列表框是空的。我说的对吗? 是的,listbox中的数据是通过数据绑定显示出来的。 您能否在上述代码中也提供数据绑定代码?谢谢 更新了问题。 【参考方案1】:

我找到了答案,

private void listBoxobj_SelectionChanged(object sender, SelectionChangedEventArgs e)
    
        MyData list_item = listBoxobj.SelectedItem as  MyData;    
        Frame.Navigate(typeof(Page2), list_item);        
    

在下一页中,以这种方式导出参数

 protected override void OnNavigatedTo(NavigationEventArgs e)
    
       textBlock1.Text = ((Appbar_Sample.MyData)e.Parameter).LineOne;
        textBlock2.Text = ((Appbar_Sample.MyData)e.Parameter).LineTwo;
    

【讨论】:

以上是关于如何在文本块中显示列表框选定项的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 jQuery 从文本框中的列表中显示选定的选项?

如何在列表框中显示多个字典项

如何将列表框选定项作为按钮中的命令参数传递?

如何在运行时更改列表框中的选定项目文本?

如何将两个组合框的选定项与单个数据源分开?

如何在泥浆中突出显示选定的列表项?