1

我有一个listbox,我在其中每行传递 5 个项目。我的 XML 文件如下所示:

 <ListBox x:Name="DatabaseBox" ItemsSource="{Binding Book}">
     <ListBox.ItemTemplate>
        <DataTemplate>
          <StackPanel Orientation="Horizontal" Width="auto" Height="22">
             <Image x:Name="ToggleFavoriteImage" Width="10" Height="10" Tag="{Binding Tag}" Source="{Binding ImageSource}" HorizontalAlignment="Center"/>
                <TextBlock Text="{Binding Name}" HorizontalAlignment="Left" Margin="10,0,0,0" VerticalAlignment="Center"/>
                <ListBoxItem Content="{Binding City}" HorizontalAlignment="Center"/>
                <ListBoxItem Content="{Binding Author}" HorizontalAlignment="Center"/>
                <ListBoxItem Content="{Binding Country}" HorizontalAlignment="Center"/>
          </StackPanel>
        </DataTemplate>
    </ListBox.ItemTemplate>
 </ListBox>

哪里Bookprivate static List<BookItems> Book{ get; set; }BookItems

    public struct BookItems
    {
        public string Name{ get; set; }
        public string Url { get; set; }
        public string Author{ get; set; }
        public string City { get; set; }
        public string Country { get; set; }
        public string Tag { get; set; }
        public ImageSource ImageSource { get; set; }
    }

我要传入的所有数据ListBox都存储在另一个中Listprivate static List<Tuple<StringBuilder , StringBuilder , StringBuilder , StringBuilder , StringBuilder >> BookList = new List<Tuple<StringBuilder , StringBuilder , StringBuilder , StringBuilder , StringBuilder >>();

因此,如果我尝试以ListBox这种方式填写:

 foreach(var ListItem in BookList)
 {
    Book= new List<BookItems>() 
    {
      new BookItems() 
      {
         Tag = ListItem.Item1.ToString(),ImageSource = FavoriteSource, Name= ListItem.Item1.ToString(), Author= ListItem.Item3.ToString(), City = ListItem.Item4.ToString(),Country = ListItem.Item5.ToString()
       }
     };
     DatabaseBox.Items.Add(Book);
 }

然后我到处都是,null除了图像。如果我也更改我BookList的 tostrings和我的 Book,那么一切都会顺利进行,没有任何问题。我每次使用控制台输出检查从StringBuilder到的转换并且我的为空,我的 StringBuilder 是好的。我做错了什么吗?stringstrings

4

2 回答 2

0

您应该在元组中为 StringBuilder 项目创建实例,例如 new StringBuilder()

于 2013-07-10T08:42:54.453 回答
0

正如您所说, stringBuilder 很好,所以我给您的解决方案首先是不要为每个项目创建一个列表。我不知道您为什么要这样做,但是您添加到 DatabaseBox 的每个项目都不应该有一个列表。

第二,拿你的代码

Book= new List<BookItems>() 
{
  new BookItems() 
  {
     Tag = ListItem.Item1.ToString(),ImageSource = FavoriteSource, Name= ListItem.Item1.ToString(), Author= ListItem.Item3.ToString(), City = ListItem.Item4.ToString(),Country = ListItem.Item5.ToString()
   }
 };

并重写它。还重写属性BookItems并使其成为一个类。在您完成所有这些之后,调试过程将很容易。如果stringBuilders包含数据,您将确切地看到它发生了什么。

于 2013-07-10T10:09:21.427 回答