Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在C#-UWP中对列表视图重新排序_C#_Sorting_Listview_Uwp - Fatal编程技术网

在C#-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="

我已经创建了一个XAML 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;
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是非常重要的信息。您可能想编辑您的问题并添加它。我很抱歉,您已经这样做了。