2016-06-29 3 views
1

내 목록보기 항목이 나타나지 않습니다. 실제로 문서 라이브러리의 파일 이름을 목록보기에 수집하려고합니다.UWP-List보기 내용 비어 있음

<ListView x:Name="Mylist" SelectionMode="Single" ShowsScrollingPlaceholders="True" 
       Grid.ColumnSpan="2" ItemsSource="{x:Bind data}" > 

     <ListView.ItemTemplate> 
      <DataTemplate x:DataType="dat:Class1"> 
       <StackPanel> 
        <TextBlock Text="{Binding Key}" Style="{StaticResource TitleTextBlockStyle}"/> 
       </StackPanel> 
      </DataTemplate> 
     </ListView.ItemTemplate> 

클래스 1 파일 :

namespace App1{ 
public class Class1:List<object> 
{ 
    public Class1() 
    { 
    } 
    public string Items { get; set; } 
    public object Key { get; set; } 
}} 

Mainpagexaml.cs

 public ObservableCollection<Class1> _data; 
    public ObservableCollection<Class1> data { get { return _data; } } 

    public MainPage() 
    { 
     this.InitializeComponent(); 

    } 
    protected async override void OnNavigatedTo(NavigationEventArgs e) 
    { 
     base.OnNavigatedTo(e); 
     _data = await Data.ItemsGrouped(); 
    } 

Data.cs

,536,913 여기

은 XAML입니다
public async static Task<ObservableCollection<Class1>> generatename() 

    { 
     ObservableCollection<Class1> newdata = new ObservableCollection<Class1>(); 
     //var myfiles = await getfiles(); 
     StorageFolder folder = await KnownFolders.GetFolderForUserAsync(null, KnownFolderId.DocumentsLibrary); 
     List<string> filetypefilter = new List<string>(); 
     filetypefilter.Add(".mp3"); 

     QueryOptions query = new QueryOptions(CommonFileQuery.OrderBySearchRank, filetypefilter); 
     StorageFileQueryResult queryresult = folder.CreateFileQueryWithOptions(query); 
     IReadOnlyList<StorageFile> files = await queryresult.GetFilesAsync(); 
     foreach (var file in files) 
     { 
      newdata.Add(new Class1() { Items = file.Name }); 
      var f = file.Name; 
     } 
     return newdata; 

    } 
    public async static Task<ObservableCollection<Class1>> ItemsGrouped() 
    { 

     ObservableCollection<Class1> cgroup = new ObservableCollection<Class1>(); 
     var x = await generatename(); 
     var query = from item in x 
        group item by item.Items[0] into g 
        orderby g.Key 
        select new { GroupName = g.Key, Items = g }; 


     foreach (var item in query) 
     { 
      Class1 c1 = new Class1(); 
      c1.Key = item.GroupName; 
      foreach (var item2 in item.Items) 
      { 
       c1.Add(item2); 
       c1.Items = item2.Items; 
      } 
      cgroup.Add(c1); 
     } 
     return cgroup; 
    } 

파일 이름이 data.cs 파일에서 읽히지 만 UI에서는 결과가 없습니다.

답변

2

문제는 관찰 가능한 컬렉션을 "바꾸는"것입니다. 할당 자 _data = await Data.ItemsGrouped();을 생성자 (_data = new ObservableCollection<Class1>())에서 한 번만 생성 한 다음 다시 할당하지 말고 그냥 지우고 데이터로 채 웁니다.

_data.Clear(); 
_data.AddRange(await Data.ItemsGrouped()); 

또한 ItemsGrouped 메서드는 관찰 가능한 컬렉션 대신 목록을 반환합니다.

+0

관찰 할 수있는 컬렉션을위한 AddRange 속성이 없습니다 ... –

+0

foreach를 수행합니다. –

+0

그게 효과가 있습니다. 이제, 항목을 CollectionViewSource로 그룹화하여 알파벳 순으로 그룹화 할 수 있습니까? this : MyView.Source = await getItems(); onNavigatedTo 메소드 안에는 getItems()에 foreach 메소드가 들어 있습니다. –