c# - Sorting a listbox when a button gets clicked using MVVM -
i've been looking solution problem since yesterday. im building problem mvvm pattern. got 2 usercontrol, both containing listbox.
the first usercontrol called searchview contains listbox of project names, user can select , save applications local db.

when selected projects added event fired notify 2nd usercontrol named "projectview". usercontrol shows projects saved locally. seen @ picture below.

the problem want able sort listbox ascending name in projectview. if user first add "test project 2" , afterwords add "test project 1" "test project 1" shown in top of listbox.
i have tried use icollectionview , listcollectionview im confused @ moment.
so code looks this, in projectviewmodel needs sort listbox:
public projectviewmodel() { this.collectionview = collectionviewsource.getdefaultview(this.projects); } private observablecollection<projectwrapper> _project = new observablecollection<projectwrapper>(); public observablecollection<projectwrapper> projects { { return _project; } set { _project = value; onpropertychanged("projects"); } } xaml code:
<usercontrol.resources> <collectionviewsource x:key="cvs" source="{binding path=projects}"> <collectionviewsource.sortdescriptions> <scm:sortdescription propertyname="projectwrapper.project.name" /> </collectionviewsource.sortdescriptions> </collectionviewsource> </usercontrol.resources> <listbox name="projectslist" itemssource="{binding source={staticresource cvs}}" selecteditem="{binding path=selectedproject}" horizontalcontentalignment="stretch" borderthickness="0" grid.row="1" grid.rowspan="3" margin="0,0.4,-0.2,27.8"> <listbox.itemtemplate> <datatemplate> <dockpanel> <textblock text="{binding path=projectmodel.name}" horizontalalignment="left" verticalalignment="center" padding="3,2,0,0" /> <checkbox ischecked="{binding path=isselected, mode=twoway, updatesourcetrigger=propertychanged}" horizontalalignment="right" verticalalignment="center" padding="0,2,5,0" margin="0,2.5,0,0" /> </dockpanel> </datatemplate> </listbox.itemtemplate> </listbox> thanks in advance
call when adding element projects list
projects = new observablecollection<projectwrapper>(projects.orderby(x => x.name));
Comments
Post a Comment