如何在列表框中显示List <t>?

时间:2019-05-04 15:14:19

标签: c# uwp uwp-xaml

我尝试显示在列表框上创建的列表,但我不知道如何

我有一堂课,将一本新书添加到列表中 C#代码

public class Manager
{
    static List<Book> lstBook = new List<Book>();
    public void AddBookM(int isbn, string author, string des, string name, float price, ushort quantity, DateTime dateTime, string edition)
    {
        Book book = new Book(isbn, author, des, name, price, quantity,dateTime, edition, new List<string> { "" });
        lstBook.Add(book);
    }
}

现在在XAML中,我想在ListBox和AutoSuggestBox中的列表中看到书籍,我想在列表中搜索书籍,这将为完成本书提供可能性 XAML代码

        <AutoSuggestBox Name="SBSearchBtn" HorizontalAlignment="Center" Width="500" FontSize="20" BorderBrush="Black" Header="Search" PlaceholderText="Write here!" Margin="0,90,0,0" VerticalAlignment="Top" TextChanged="SBSearchBtn_TextChanged" QuerySubmitted="SBSearchBtn_QuerySubmitted" SuggestionChosen="SBSearchBtn_SuggestionChosen"/>
    <ListBox Name="SearchList" Width="500" Margin="140,194,860,400" Background="WhiteSmoke" FontSize="25"/>

2 个答案:

答案 0 :(得分:2)

要显示ListBox中的项目,您需要执行以下操作:

首先,您需要为ListBox定义项目模板,以便可以指定列表项目的外观。为简单起见,我仅绑定了name类的authorBook属性。

XAML

<ListBox Name="SearchList">
    <ListBox.ItemTemplate>
       <DataTemplate>
           <StackPanel>
               <TextBlock Text="{Binding author}"></TextBlock>
               <TextBlock Text="{Binding name}"></TextBlock>
           </StackPanel>
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>

我建议您使用ObservableCollection而不是仅使用List,因为您希望根据用户搜索的内容来更新列表项。

private ObservableCollection<Book> lstBook = new ObservableCollection<Book>();

接下来,在页面的Loaded事件(或根据需要可能需要的任何事件)中,将ItemSource的{​​{1}}设置为您创建的ListBoxObservableCollection

listBook

您现在应该看到一个条目已添加到列表视图。在这种情况下使用private void Page_Loaded(object sender, RoutedEventArgs e) { //Setting item source of the list box SearchList.ItemsSource = lstBook; //Adding an entry to lstBook AddBookM(1, "auth", "des", "name", 2.55f, 10, DateTime.Now, "edition"); } 的好处是,每当您更改(添加/删除)ObservableCollection中的任何项目时,您的UI都会自动更新。

因此,当您再次调用ObservableCollection<Book> lstBook时,您会看到新条目也已添加到AddBookM()中。

希望这会有所帮助。

答案 1 :(得分:0)

您需要手动编写:

informations

您没有说您在说什么ListBox,所以我只是假设您在谈论Windows Forms库中的ListBox。

希望我能帮助您!