how to sort the items in listbox alphabetically?
- by user2745378
i need to sort the items alphabetically in listbox when sort button is clicked. (I have sort button in appbar). But I dunno how to achieve this. here is XAML. All help will be much appreciated.
<phone:PhoneApplicationPage.Resources>
<DataTemplate x:Key="ProjectTemplate">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="400" />
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="1" Text="{Binding Name}" Style="{StaticResource PhoneTextLargeStyle}" />
</Grid>
</DataTemplate>
</phone:PhoneApplicationPage.Resources>
<Grid x:Name="ContentPanel" Grid.Row="1" Margin="0,0,12,0">
<ListBox x:Name="projectList" ItemsSource="{Binding Items}" SelectionChanged="ListBox_SelectionChanged" ItemTemplate="{StaticResource ProjectTemplate}" />
</Grid>
Here's my ViewModel
namespace PhoneApp.ViewModels
{
public class ProjectsViewModel: ItemsViewModelBase<Project>
{
public ProjectsViewModel(TaskDataContext taskDB)
: base(taskDB)
{
}
public override void LoadData()
{
base.LoadData();
var projectsInDB = _taskDB.Projects.ToList();
Items = new ObservableCollection<Project>(projectsInDB);
}
public override void AddItem(Project item)
{
_taskDB.Projects.InsertOnSubmit(item);
_taskDB.SubmitChanges();
Items.Add(item);
}
public override void RemoveItem(int id)
{
var projects = from p in Items
where p.Id == id
select p;
var item = projects.FirstOrDefault();
if (item != null)
{
var tasks = (from t in App.TasksViewModel.Items
where t.ProjectId == item.Id
select t).ToList();
foreach (var task in tasks)
App.TasksViewModel.RemoveItem(task.Id);
Items.Remove(item);
_taskDB.Projects.DeleteOnSubmit(item);
_taskDB.SubmitChanges();
}
}
}
}
I have added the ViewModel C# Code herewith