2017-04-20 5 views
1

私は、XAML UWPリストビューは再ソートリストビュー - UWP

  <ListView x:Name="ThisList" 
        Grid.Row="3" 
        Grid.ColumnSpan="7" 
        Background="LightBlue" 
        IsItemClickEnabled="True" 
        BorderBrush="Black" 
        BorderThickness="2" 
        ItemClick="ThisList_ItemClick"> 
      <ListView.ItemContainerStyle> 
       <Style TargetType="ListViewItem"> 
        <Setter Property="HorizontalContentAlignment" Value="Stretch" /> 
       </Style> 
      </ListView.ItemContainerStyle> 

      <ListView.ItemTemplate> 
       <DataTemplate> 
        <Grid BorderThickness="1" BorderBrush="Black"> 
         <Grid.Resources> 
          <local:ColourConverter x:Key="CCX"/> 
         </Grid.Resources> 

         <Grid.ColumnDefinitions> 
          <ColumnDefinition Width="50"/> 
          <ColumnDefinition Width="10*" MinWidth="500"/> 
          <ColumnDefinition Width="170"/> 
          <ColumnDefinition Width="100"/> 
         </Grid.ColumnDefinitions> 

         <Border Background="Aquamarine" Grid.Column="0"> 
          <SymbolIcon Symbol="{Binding Icon}" HorizontalAlignment="Center" Margin="10"/> 
         </Border> 
         <Border Background="Yellow" Grid.Column="1"> 
          <TextBlock Name="tbFileName" Text="{Binding FName}" VerticalAlignment="Center" Margin="5" /> 
         </Border> 
         <Border Background="Cyan" Grid.Column="2"> 
          <!--<TextBlock Text="{Binding FTime}" VerticalAlignment="Center" Margin="5" />--> 
          <TextBlock Text="{Binding FTime}" 
             Name="FileTime" 
             VerticalAlignment="Center" 
             HorizontalAlignment="Center" 
             Foreground="{Binding ElementName=FileTime, 
                  Path=Text, 
                  Mode=OneWay, 
                  Converter={StaticResource CCX}}"/> 
         </Border> 
         <Border Background="Tomato" Grid.Column="3"> 
          <TextBlock Text="{Binding FSize}" HorizontalAlignment="Right" Margin="10" /> 
         </Border> 
        </Grid> 
       </DataTemplate> 
      </ListView.ItemTemplate> 
     </ListView> 

の背後にあるコードは、だから私の質問は、私が作成したいということです

 var folderItem = new ObservableCollection<FolderInfo>(); 
     foreach (StorageFolder folder in folderList) 
     { 
      BasicProperties pro = await folder.GetBasicPropertiesAsync(); 
      folderItem.Add(new FolderInfo() 
      { 
       FName = folder.DisplayName, 
       FSize = "", 
       FTime = lastFileSave, 
       FIsFolder = true      
      }); 
     } 

     foreach (StorageFile file in fileList) 
     { 
      BasicProperties pro = await file.GetBasicPropertiesAsync(); 
      lastFileSave = file.DateCreated.ToString(Globals.TimeFormat); 
      folderItem.Add(new FolderInfo() 
      { 
       //FName = file.DisplayName, 
       FName = file.Name, 
       FSize = GetFileSize(pro.Size), 
       FTime = lastFileSave, 
       FIsFolder = false, 
       Icon="Document" 
      }); 

     } 
     showLoadingBox(false); 
     FileInfo.Text += $"Last file saved : {lastFileSave}"; 
     ThisList.ItemsSource = folderItem; 

で作成しましたヘッダー行をクリックすると、その列でListViewが再ソートされ、再度クリックすると降順が再ソートされます。

これを達成する最も良い方法は何ですか?

+0

http://www.wpf-tutorial.com/listview-control/listview-how-to-column-sorting/のように見えます。 –

+0

残念ながら、そのページはWPFフォームのみで、私が使用しているUWPでは使用できません。 –

+0

あなたがUWPをやっていることはかなり重要な情報です。質問を編集して追加することもできます。 –

答えて

0

私は別のグリッドを作成してヘッダーを作成し、データソースを再クエリーするタップしたイベントを追加しましたが、リストビューのソースに割り当てられているのでクエリを実行しました次のように。

ThisList.ItemsSource = (from FolderInfo in folderItem 
             orderby FolderInfo.RealDateTime 
             select FolderInfo); 

は、それはおそらく、物事の最も効率的な方法ではありませんが、現在唯一の方法は、私が使用可能なソート方法のいくつかの種類を持つListViewコントロールせずにそれを行うのを見ることができます。

もっと良い方法があればコメントをいただきたいと思います。