我有一个 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/