c# - 需要一些关于排序字符串列表的想法

标签 c# wpf string sorting

我有一个 C#\WPF 应用程序,它只在列表框控件中显示变量名称及其值的列表。当用户点击刷新按钮时,将使用变量的新值重新创建列表。有些变量可能已经改变,而有些则保持不变。

我希望自上次刷新以来更改的值位于列表框的顶部,但想不出一个优雅的方法来解决这个问题。任何想法或示例将不胜感激。

谢谢!

最佳答案

最好为您的列表项(模型)提供一些旨在简单地为 View 服务的附加功能, View 模型样式——当然,如果您想让模型保持纯净,您可以将模型包装在 View 模型中。

例如,您可以为您的模型提供一个您可以设置的 Changed 属性(或者,Value 属性 setter 可以在值更改时自动更改它)。然后可以使用此属性对 ListBox 中的项目进行排序,方法是对框绑定(bind)到的 Collection View 进行排序:

<CollectionViewSource x:Key="SortedModels" Source="{Binding ListOfModels}">
    <CollectionViewSource.SortDescriptions>
        <SortDescription PropertyName="Changed"/>
    </CollectionViewSource.SortDescriptions>
</CollectionViewSource>

<ListBox ItemsSource="{Binding Source={StaticResource SortedModels}}"/>

假设您的模型实现了 INotifyPropertyChanged 并且 ListOfModels 是一个 ObservableCollection,这就是自动完成排序所需的全部内容。

关于c# - 需要一些关于排序字符串列表的想法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14636565/

相关文章:

sql - 如何将单个列值拆分为多个列值?

java - 如何使用 ReplaceAll() 方法将整个字符串替换为空值?

c# - 如何更改运行时应用程序设置

c# - MVVM 中公共(public)属性的实践

c# - 消息框弹出不止一次

c# WPF,如何在单击按钮时展开表单?

c# - Linq 查询后从 Xdocument 获取文件名

c# - DeviceIoControl 初始化并创建 NTFS 分区

wpf - Windows Phone 开发使用 wpf?

iphone - 如何检查我的字符串是否以大写字符开头