i'm making adaptive layout win 10 universal application. reason when try change wrapgrid's maximumrowsorcolumns value in visualstate triggers, doesn't work correctly.
well works if user changes windows size, when launching program, seems adaptivetrigger has no effect value.
here's code:
<hub> <visualstatemanager.visualstategroups> <visualstategroup> <visualstate x:name="wideview"> <visualstate.statetriggers> <adaptivetrigger minwindowwidth="720" /> </visualstate.statetriggers> <visualstate.setters> <setter target="wrappanel.maximumrowsorcolumns" value="3" /> </visualstate.setters> </visualstate> <visualstate x:name="narrowview"> <visualstate.setters> <setter target="wrappanel.maximumrowsorcolumns" value="2" /> </visualstate.setters> <visualstate.statetriggers> <adaptivetrigger minwindowwidth="0" /> </visualstate.statetriggers> </visualstate> </visualstategroup> </visualstatemanager.visualstategroups> <hubsection> <datatemplate> <gridview> <gridview.itemspanel> <itemspaneltemplate> <wrapgrid orientation="horizontal" x:name="wrappanel"/> </itemspaneltemplate> </gridview.itemspanel> <gridviewitem> <rectangle width="250" height="100" fill="red" margin="6" /> </gridviewitem> <gridviewitem> <rectangle width="250" height="100" fill="yellow" margin="6" /> </gridviewitem> <gridviewitem> <rectangle width="250" height="100" fill="green" margin="6" /> </gridviewitem> <gridviewitem> <rectangle width="250" height="100" fill="blue" margin="6" /> </gridviewitem> </gridview> </datatemplate> </hubsection> </hub>
if want trigger work @ launch can try forcing app launch specific width , height. way visual states can triggered. below snippet need put in yourfile.xaml.cs:
applicationview.preferredlaunchwindowingmode != applicationviewwindowingmode.auto; applicationview.preferredlaunchviewsize = new size { width = 600, height = 500 }; applicationview.preferredlaunchwindowingmode = applicationviewwindowingmode.preferredlaunchviewsize; also coding practice take out visual state manager xaml < hub >< /hub> tags , place them @ end of code (but inside < grid> < /grid> tag)
<hub> <hubsection x:name="hubsection" header="test"> <datatemplate> <gridview> <gridview.itemspanel> <itemspaneltemplate> <wrapgrid orientation="horizontal" x:name="wrappanel1" maximumrowsorcolumns="3"/> </itemspaneltemplate> </gridview.itemspanel> <gridviewitem > <rectangle width="250" height="100" fill="red" margin="6" /> </gridviewitem> <gridviewitem> <rectangle width="250" height="100" fill="yellow" margin="6" /> </gridviewitem> <gridviewitem> <rectangle width="250" height="100" fill="green" margin="6" /> </gridviewitem> <gridviewitem> <rectangle width="250" height="100" fill="blue" margin="6" /> </gridviewitem> <gridviewitem> <rectangle width="250" height="100" fill="orange" margin="6" /> </gridviewitem> </gridview> </datatemplate> </hubsection> </hub> <visualstatemanager.visualstategroups> <visualstategroup> <visualstate x:name="wideview"> <visualstate.statetriggers> <adaptivetrigger minwindowwidth="700" /> </visualstate.statetriggers> <visualstate.setters> <setter target="wrappanel1.maximumrowsorcolumns" value="3"/> <setter target="hubsection.header" value="wideview" /> </visualstate.setters> </visualstate> <visualstate x:name="narrowview"> <visualstate.statetriggers> <adaptivetrigger minwindowwidth="0" /> </visualstate.statetriggers> <visualstate.setters> <setter target="wrappanel1.maximumrowsorcolumns" value="2" /> <setter target="hubsection.header" value="vertical" /> </visualstate.setters> </visualstate> </visualstategroup> </visualstatemanager.visualstategroups> </grid>
Comments
Post a Comment