WPF动态排序

时间:2014-05-23 18:18:06

标签: c# wpf listbox

我有一个Model,其中一个属性是 Order ,是一种int类型。该模型放在 ObservableCollection 中,例如 ModelList 绑定到列表框。

使用此代码

<CollectionViewSource Source="{StaticResource ModelList}" x:Key="SortedItems">
  <CollectionViewSource.SortDescriptions>
    <scm:SortDescription PropertyName="Order"/>
  </CollectionViewSource.SortDescriptions>
</CollectionViewSource>

然后此列表使用

绑定到列表框
<ListView ItemsSource="{Binding Source={StaticResource SortedItems}}" />

工作罚款。但我想通过Order属性更改列表的顺序,也就是当我通过代码更改Order时,我希望列表框能够反映更改。

我怎样才能做到这一点。

1 个答案:

答案 0 :(得分:0)

要使用CollectionViewSource,您需要更新SortDescriptions property

要从代码访问CollectionViewSource,请在viewmodel中声明它并绑定到它(而不是在XAML中声明它)。对于可视化树中的项目,您可以使用x:Name,但这似乎不适用于Resources标记,至少通过初始测试