首页 > 解决方案 > 我想重新排列自然完成的 ObservableCollection

问题描述

我正在研究 WPF MVVM。

我正在从数据库中获取记录,并且已将 ObservableCollection 绑定到 xaml Itemsource。

获取列表代码:

private async void getKYCUserDetails()
{
var data = _DataService.Client;
                var AllKYCUserList = await data.For<vwKYCUserDetails>().FindEntriesAsync();
                lstTempKYCUserDetails= new ObservableCollection<vwKYCUserDetails>(AllKYCUserList);
}

我想重新排列 ObservableCollection 以便系统必须在报告顶部显示其详细信息在性质上完整的客户端,以便用户可以按照 JIT 方法行事。

xml:

   <syncfusion:SfDataGrid x:Name="dgKYCUser" 
                                               ItemsSource="{Binding Path = lstTempKYCUserDetails,Mode=TwoWay}"   
                                           SelectedItem="{Binding SelectedItem,Mode=TwoWay}"                                                   
                                           NavigationMode="Row"
                                           SelectionMode="Multiple"
                                           ColumnSizer="Auto"
                                           HeaderRowHeight="30"
                                           AllowFiltering="True"                                                   
                                           AllowSorting="True"                                                                                     
                                           AllowGrouping="True" 
                                           ShowGroupDropArea="True" 
                                           HeaderStyle="{StaticResource headerStyle}" 
                                           AllowResizingColumns="True"
                                           AllowDraggingColumns="True"
                                           AllowDrop="True"
                                           AutoGenerateColumns="False"
                                           Foreground="#3e4345"
                                           AllowEditing="True"
                                           FrozenColumnCount="2"
                                           BorderBrush="Red"
                                           Background="White"
                                           >

我在 sfDatagrid 中有多个列,因为我正在使用 Converter 将布尔值转换为图像并显示图像。

例如

                            <syncfusion:GridImageColumn 
                        ImageHeight="20" Width="30" ShowHeaderToolTip="True"
                        MappingName="bMobileVerify" HeaderText="Mobile Verified" 
                       ValueBinding="{Binding bMobileVerify, Converter={StaticResource ImageConverter}}"                                                        
                    />

ImageConverter 代码:

public class ImageConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        if ((Boolean)value == true)
        {
            return new BitmapImage(new Uri(string.Format(@"..\..\Images\{0}", "check.png"), UriKind.Relative));
        }
        else if ((Boolean)value == false)
        {
            return new BitmapImage(new Uri(string.Format(@"..\..\Images\{0}", "crosssqr.png"), UriKind.Relative));
        }
        return new BitmapImage(new Uri(string.Format(@"..\..\Images\{0}", "TransparentBackground.png"), UriKind.Relative));
    }

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        throw new NotImplementedException();
    }
}

UI 网格图像

我希望具有最多刻度的记录应该在顶部同样应该排列,我不知道如何重新排列它。

标签: wpfxamluser-interfacemvvmobservablecollection

解决方案


你可以使用 ICollectionView

ICollectionView 视图 = CollectionViewSource.GetDefaultView(lstTempKYCUserDetails); view.SortDescriptions.Add(new SortDescription("tickscounter", ListSortDirection.Descending));


推荐阅读