我怎样才能使用XAMLsorting列表框,没有代码隐藏?

我需要对ListBox的string进行sorting,但是通过DataContext将其绑定到另一个组件的视图模型。 所以我不能在XAML中直接实例化视图模型,就像在这个使用ObjectDataProvider 例子中一样 。

在我的XAML中:

 <ListBox ItemsSource="{Binding CollectionOfStrings}" /> 

在我看来的模型中:

 public ObservableCollection<string> CollectionOfStrings { get { return collectionOfStrings; } } 

在另一个组件中:

 view.DataContext = new ViewModel(); 

没有代码背后! 因此,使用纯粹的XAML,我将如何sorting列表框中的项目? 同样,XAML不拥有视图模型的实例化。

使用CollectionViewSource

 <CollectionViewSource x:Key="SortedItems" Source="{Binding CollectionOfStrings}" xmlns:scm="clr-namespace:System.ComponentModel;assembly=Win‌​dowsBase"> <CollectionViewSource.SortDescriptions> <scm:SortDescription PropertyName="SomePropertyOnYourItems"/> </CollectionViewSource.SortDescriptions> </CollectionViewSource> <ListBox ItemsSource="{Binding Source={StaticResource SortedItems}}"/> 

您可能希望将自己的string封装在自定义的VM类中,以便更轻松地应用sorting行为。