2016-10-25 46 views
3

我有组合框。该组合框内的项目来自数据库,我试图按字母顺序排序,但无法这样做。有人可以帮助搞清楚如何实现这一目标吗?wpf按字母顺序排序组合框项目

private ObservableCollection<StudentModules> modules; 

public StudentModule() 
     { 
      InitializeComponent(); 
      DataContext = this; 
      Modules = new ObservableCollection<StudentModules>(); 
      ModuleNames.ItemsSource = modules; 

      IDataAccess<ModulesFinder, StudentModules> moduleRetriever = ((IDataManager)Application.Current.Properties["Database”]).GetDataAccessor<ModuleFinder, StudentModules>(); 

      foreach (StudentModules module in retrieve.AllItems()) 
      { 
       Modules.Add(module); 
      } 
     } 

<ComboBox Name="ModuleNames" > 
        <ComboBox.SelectedItem> 
         <Binding Path="ModuleDetails" NotifyOnValidationError="True"> 
          <Binding.ValidationRules> 
           <validators:IsMandatoryValidation FieldName="Module Names"/> 
          </Binding.ValidationRules> 
         </Binding> 
        </ComboBox.SelectedItem> 
       </ComboBox> 
+1

你能证明你迄今为止的尝试吗? –

+0

你应该提到它是winform还是wpf或其他类型的应用程序在你的问题 –

+0

@viveknuna判断是否存在XAML我会说这是WPF – ChrisF

回答

2

您应该使用CollectionViewSource

XAML:

<UserControl.Resources> 
    <CollectionViewSource x:Key="ModulesViewSource" Source="{Binding Path=Modules}"> 
    <CollectionViewSource.SortDescriptions> 
     <scm:SortDescription PropertyName="Name" /> 
    </CollectionViewSource.SortDescriptions> 
    </CollectionViewSource> 
</UserControl.Resources> 

... 

<ComboBox ItemsSource="{StaticResource ModulesViewSource}" /> 

注意:您需要导入System.ComponentModel命名空间为SCM

+0

scm那是什么? – luka

+0

这是吗? xmlns:scm =“clr-namespace:System.ComponentModel; assembly = WindowsBase” – luka

+1

@luka:我更新了我的答案,是的,** scm **指的是System.ComponentModel。 –