how add ui controller pages of app? example, having same splitview controller navigation menu in pane on pages without copying xaml code? or maybe changing app.xaml in way?
or, second option, possible create usercontrol contains splitview , put other views on page inside content? mean, how put views usercontrol in xaml (or in code)?
create custom rootcontrol
derives usercontrol
class , contains root frame
<splitview displaymode="compactoverlay"> <splitview.pane> <stackpanel> <appbarbutton icon="home" width="50" minwidth="50" click="onhomeclicked" /> <appbarbutton icon="shop" width="50" minwidth="50" click="onshopclicked"/> <appbarbutton icon="setting" minwidth="50" width="50" click="onsettingsclicked"/> </stackpanel> </splitview.pane> <splitview.content> <grid> <frame x:name="rootframe"/> <!--put hamburger button here--> </grid> </splitview.content> </splitview>
rewrite onlauched:
protected override void onlaunched(launchactivatedeventargs e) { var rootcontrol = window.current.content rootcontrol; if (rootcontrol == null) { // create frame act navigation context , navigate first page rootcontrol = new rootcontrol(); rootcontrol.rootframe.navigationfailed += onnavigationfailed; if (e.previousexecutionstate == applicationexecutionstate.terminated) { //todo: load state suspended application } // place frame in current window window.current.content = rootcontrol; } if (rootcontrol.rootframe.content == null) { // when navigation stack isn't restored navigate first page, // configuring new page passing required information navigation // parameter rootcontrol.rootframe.navigate(typeof(mainpage), e.arguments); } // ensure current window active window.current.activate(); }
and can manage actions code-behind or viewmodel
navigation , other actions
public sealed partial class rootcontrol : usercontrol { private type currentpage; public rootcontrol() { this.initializecomponent(); rootframe.navigated += onnavigated; } private void onnavigated(object sender, windows.ui.xaml.navigation.navigationeventargs e) { currentpage = e.sourcepagetype; } public frame rootframe { { return rootframe; } } private void onhomeclicked(object sender, windows.ui.xaml.routedeventargs e) { navigate(typeof(mainpage)); } private void onshopclicked(object sender, windows.ui.xaml.routedeventargs e) { navigate(typeof(storepage)); } private void onsettingsclicked(object sender, windows.ui.xaml.routedeventargs e) { navigate(typeof(settingspage)); } private void navigate(type pagesourcetype) { if (currentpage != pagesourcetype) { rootframe.navigate(pagesourcetype); } } }
download sample , how works
Comments
Post a Comment