2013-05-03 93 views
2

试着学习Win Phone 8,以下是一个在线教程。在教程中,这个人使用ListBox来显示文件,这对我来说工作正常。将文件绑定到longlistselector

但是,我认为我们应该使用LongListSelector,所以我补充说,但没有出现。

如果我把LongListSelector放在标记中,那么当我在模拟器中运行应用程序时都不会显示,所以我认为我会通过绑定LongListSelector来获取异常。我不明白为什么。

这很简单,点击一个按钮,读取目录中的文件,显示它们。

 <StackPanel x:Name="ContentPanel" Margin="12,0,12,0" Grid.Row="1" > 
     <Button Content="Show files" Click="Button_Click_1"/> 

     <ListBox x:Name="lb"> 
      <ListBox.ItemTemplate> 
       <DataTemplate> 
        <StackPanel> 
         <TextBlock Text="{Binding Name}" /> 
         <Image x:Name="img" Source="{Binding Path}" Width="100" Height="100"/> 
        </StackPanel> 
       </DataTemplate> 
      </ListBox.ItemTemplate> 
     </ListBox> 

     <phone:LongListSelector HorizontalAlignment="Left" 
           x:Name="llsFiles" 
           ItemTemplate="{StaticResource FilesDataTemplate}" 
           /> 

    </StackPanel> 

和LLS模板:

<phone:PhoneApplicationPage.Resources> 
    <DataTemplate x:Key="FilesDataTemplate"> 
     <TextBlock Text="{Binding Name}"/> 
    </DataTemplate> 
</phone:PhoneApplicationPage.Resources> 

然后隐藏代码:

private void Button_Click_1(object sender, RoutedEventArgs e) 
    { 
     GetPackageFiles(); 
    } 

    private async Task GetPackageFiles() 
    { 
     //Get the folder where the app is installed on the phone. 
     var installFolder = Package.Current.InstalledLocation; 
     var imagesFolder = await installFolder.GetFolderAsync("Images"); 

     var fileList = await imagesFolder.GetFilesAsync(); 

     lb.ItemsSource = fileList; 

     llsFiles.ItemsSource = fileList.ToList(); 
    } 
+0

我觉得我一头栽进这是怎么回事结合,但不明白它。出于某种原因,取消Horizo​​ntalAlignment属性会使列表呈现。不确定绑定是否发生,但是输出完全被压扁,或者实际上导致绑定失败。 – 2013-05-15 15:29:36

回答

1

试试这个

//add this declaration 
List<FirstList> source = new List<FirstList>(); 
public class FirstList 
    { 
     [DataMember] 
     public string cItem { get; set; } 

     public FirstList(string item) 
     { 
      this.cItem = item; 
     } 
    } 

然后添加任何你只是这样做。

source.Add(new FirstList(fileList.ToString()); 

让你确认你已经将它

相关问题