在C#-UWP中对列表视图重新排序
我已经创建了一个XAML UWP列表视图在C#-UWP中对列表视图重新排序,c#,sorting,listview,uwp,C#,Sorting,Listview,Uwp,我已经创建了一个XAML UWP列表视图 <ListView x:Name="ThisList" Grid.Row="3" Grid.ColumnSpan="7" Background="LightBlue" IsItemClickEnabled="True" BorderBrush="
<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;
var folderItem=新的ObservableCollection();
foreach(文件夹列表中的StorageFolder文件夹)
{
BasicProperties pro=等待文件夹。GetBasicProperties异步();
添加(新的FolderInfo()
{
FName=folder.DisplayName,
FSize=“”,
FTime=lastFileSave,
FIsFolder=true
});
}
foreach(文件列表中的存储文件)
{
BasicProperties pro=await file.getBasicProperties异步();
lastFileSave=file.DateCreated.ToString(Globals.TimeFormat);
添加(新的FolderInfo()
{
//FName=file.DisplayName,
FName=file.Name,
FSize=GetFileSize(pro.Size),
FTime=lastFileSave,
FIsFolder=false,
Icon=“文档”
});
}
显示装载箱(假);
FileInfo.Text+=$“上次保存的文件:{lastFileSave}”;
ThisList.ItemsSource=folderItem;
所以我的问题是,我想创建一个标题行,我可以单击标题,它会按该列对ListView重新排序,如果我再次单击,它会按降序重新排序
实现这一点的最佳方法是什么?好的,所以没有匆忙的答案,所以我创建了一个单独的网格来制作标题,并添加了一个点击事件来重新查询数据源,但在分配给listview源时对其进行查询,如下所示
ThisList.ItemsSource = (from FolderInfo in folderItem
orderby FolderInfo.RealDateTime
select FolderInfo);
这可能不是最有效的方法,但目前我能看到的唯一方法是在ListView没有可用排序方法的情况下进行排序
如果有更好的方法,我将不胜感激。好的,所以没有匆忙的回答,所以我创建了一个单独的网格来制作标题,并添加了一个点击事件来重新查询数据源,但在分配给listview源时对其进行查询,如下所示
ThisList.ItemsSource = (from FolderInfo in folderItem
orderby FolderInfo.RealDateTime
select FolderInfo);
这可能不是最有效的方法,但目前我能看到的唯一方法是在ListView没有可用排序方法的情况下进行排序
如果有更好的方法,我们将不胜感激。似乎会有所帮助。不幸的是,该页面仅包含WPF表单,而不包含我正在使用的UWP。您正在使用UWP是非常重要的信息。您可能想编辑您的问题并添加。我很抱歉-已经这样做了。似乎会有帮助。不幸的是,该页面仅包含WPF表单,而不包含我正在使用的UWP。您正在执行UWP是非常重要的信息。您可能想编辑您的问题并添加它。我很抱歉,您已经这样做了。