我怎样才能使用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=WindowsBase"> <CollectionViewSource.SortDescriptions> <scm:SortDescription PropertyName="SomePropertyOnYourItems"/> </CollectionViewSource.SortDescriptions> </CollectionViewSource> <ListBox ItemsSource="{Binding Source={StaticResource SortedItems}}"/>
您可能希望将自己的string封装在自定义的VM类中,以便更轻松地应用sorting行为。