c# - Add controller to all pages UWP -


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