Xamarin Forms: Open menu by custom button in MasterDetail based project










0















In my MasterDetail based project, I need a custom appearence for the navigation part for a specific detail page. To avoid rendering a custom Navigation, I set



 NavigationPage.SetHasNavigationBar(this, false);


so navigation disappear an then I create by grid a background and a button like:



<Grid>
<Image Source="BackgroundImage.png"/> <!-- This should fill the grid -->
<Image Source="back_button" HorizontalOptions="StartAndExpand" Aspect="AspectFit" >
<Image.GestureRecognizers>
<TapGestureRecognizer Tapped="Handle_Tapped"/>
</Image.GestureRecognizers>
</Image>
</Grid>


Handle_Tapped should be manage the open/hide menu of master detail. I think i need to manage the IsPresented properties like



 MasterDetailPage nav = new MasterDetailPage();
nav.IsPresented = true;


but that do nothing. Any help?










share|improve this question


























    0















    In my MasterDetail based project, I need a custom appearence for the navigation part for a specific detail page. To avoid rendering a custom Navigation, I set



     NavigationPage.SetHasNavigationBar(this, false);


    so navigation disappear an then I create by grid a background and a button like:



    <Grid>
    <Image Source="BackgroundImage.png"/> <!-- This should fill the grid -->
    <Image Source="back_button" HorizontalOptions="StartAndExpand" Aspect="AspectFit" >
    <Image.GestureRecognizers>
    <TapGestureRecognizer Tapped="Handle_Tapped"/>
    </Image.GestureRecognizers>
    </Image>
    </Grid>


    Handle_Tapped should be manage the open/hide menu of master detail. I think i need to manage the IsPresented properties like



     MasterDetailPage nav = new MasterDetailPage();
    nav.IsPresented = true;


    but that do nothing. Any help?










    share|improve this question
























      0












      0








      0








      In my MasterDetail based project, I need a custom appearence for the navigation part for a specific detail page. To avoid rendering a custom Navigation, I set



       NavigationPage.SetHasNavigationBar(this, false);


      so navigation disappear an then I create by grid a background and a button like:



      <Grid>
      <Image Source="BackgroundImage.png"/> <!-- This should fill the grid -->
      <Image Source="back_button" HorizontalOptions="StartAndExpand" Aspect="AspectFit" >
      <Image.GestureRecognizers>
      <TapGestureRecognizer Tapped="Handle_Tapped"/>
      </Image.GestureRecognizers>
      </Image>
      </Grid>


      Handle_Tapped should be manage the open/hide menu of master detail. I think i need to manage the IsPresented properties like



       MasterDetailPage nav = new MasterDetailPage();
      nav.IsPresented = true;


      but that do nothing. Any help?










      share|improve this question














      In my MasterDetail based project, I need a custom appearence for the navigation part for a specific detail page. To avoid rendering a custom Navigation, I set



       NavigationPage.SetHasNavigationBar(this, false);


      so navigation disappear an then I create by grid a background and a button like:



      <Grid>
      <Image Source="BackgroundImage.png"/> <!-- This should fill the grid -->
      <Image Source="back_button" HorizontalOptions="StartAndExpand" Aspect="AspectFit" >
      <Image.GestureRecognizers>
      <TapGestureRecognizer Tapped="Handle_Tapped"/>
      </Image.GestureRecognizers>
      </Image>
      </Grid>


      Handle_Tapped should be manage the open/hide menu of master detail. I think i need to manage the IsPresented properties like



       MasterDetailPage nav = new MasterDetailPage();
      nav.IsPresented = true;


      but that do nothing. Any help?







      xamarin master-detail






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked Nov 15 '18 at 8:24









      doxsidoxsi

      6201234




      6201234






















          1 Answer
          1






          active

          oldest

          votes


















          1














          You should be able to change the presentation via the IsPresented property. The problem with your attempt is, that you create a new MasterDetailpage instead of using the active one.



          Check if the current mainpage is a MasterDetailPage and change the presentation there:



          if (Application.Current.MainPage is MasterDetailPage mdp)

          mdp.IsPresented = true;



          Edit / important hint



          The above solution works only, if the current Mainpage is a MasterDetailPage. Otherwise you are not able to show the menu from the page.



          For a custom logic / custom slide-in/out menu, checkout the Nuget-Package "SlideOverKit".






          share|improve this answer

























          • the page where I use button is a Detail page. From there I wanto present menu.

            – doxsi
            Nov 15 '18 at 8:46











          • But your DetailPage is part of a MasterDetailPage. Right? If so, try the code in my answer. The code checks the current MainPage for MasterDetailpage.

            – Joehl
            Nov 15 '18 at 8:59












          • Tx. Putting your code on my Handle_Tapped, if clause is false. So my main page is not Masterdetail.

            – doxsi
            Nov 15 '18 at 9:02











          • So I misunderstood you. Can you change the Navigation to use a MasterDetailPage as a parent? Instead of directly navigating to your DetailPage? That would be the right way. Otherwise you have to implement a custom logic to show a custom menu (I edited my answer)

            – Joehl
            Nov 15 '18 at 9:30












          • @doxsi Can you mark these answer as accepted (if it helped you). then it is easy for others to find a solution as well. Tanks

            – Joehl
            Nov 19 '18 at 7:54










          Your Answer






          StackExchange.ifUsing("editor", function ()
          StackExchange.using("externalEditor", function ()
          StackExchange.using("snippets", function ()
          StackExchange.snippets.init();
          );
          );
          , "code-snippets");

          StackExchange.ready(function()
          var channelOptions =
          tags: "".split(" "),
          id: "1"
          ;
          initTagRenderer("".split(" "), "".split(" "), channelOptions);

          StackExchange.using("externalEditor", function()
          // Have to fire editor after snippets, if snippets enabled
          if (StackExchange.settings.snippets.snippetsEnabled)
          StackExchange.using("snippets", function()
          createEditor();
          );

          else
          createEditor();

          );

          function createEditor()
          StackExchange.prepareEditor(
          heartbeatType: 'answer',
          autoActivateHeartbeat: false,
          convertImagesToLinks: true,
          noModals: true,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: 10,
          bindNavPrevention: true,
          postfix: "",
          imageUploader:
          brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
          contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
          allowUrls: true
          ,
          onDemand: true,
          discardSelector: ".discard-answer"
          ,immediatelyShowMarkdownHelp:true
          );



          );













          draft saved

          draft discarded


















          StackExchange.ready(
          function ()
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53315125%2fxamarin-forms-open-menu-by-custom-button-in-masterdetail-based-project%23new-answer', 'question_page');

          );

          Post as a guest















          Required, but never shown

























          1 Answer
          1






          active

          oldest

          votes








          1 Answer
          1






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes









          1














          You should be able to change the presentation via the IsPresented property. The problem with your attempt is, that you create a new MasterDetailpage instead of using the active one.



          Check if the current mainpage is a MasterDetailPage and change the presentation there:



          if (Application.Current.MainPage is MasterDetailPage mdp)

          mdp.IsPresented = true;



          Edit / important hint



          The above solution works only, if the current Mainpage is a MasterDetailPage. Otherwise you are not able to show the menu from the page.



          For a custom logic / custom slide-in/out menu, checkout the Nuget-Package "SlideOverKit".






          share|improve this answer

























          • the page where I use button is a Detail page. From there I wanto present menu.

            – doxsi
            Nov 15 '18 at 8:46











          • But your DetailPage is part of a MasterDetailPage. Right? If so, try the code in my answer. The code checks the current MainPage for MasterDetailpage.

            – Joehl
            Nov 15 '18 at 8:59












          • Tx. Putting your code on my Handle_Tapped, if clause is false. So my main page is not Masterdetail.

            – doxsi
            Nov 15 '18 at 9:02











          • So I misunderstood you. Can you change the Navigation to use a MasterDetailPage as a parent? Instead of directly navigating to your DetailPage? That would be the right way. Otherwise you have to implement a custom logic to show a custom menu (I edited my answer)

            – Joehl
            Nov 15 '18 at 9:30












          • @doxsi Can you mark these answer as accepted (if it helped you). then it is easy for others to find a solution as well. Tanks

            – Joehl
            Nov 19 '18 at 7:54















          1














          You should be able to change the presentation via the IsPresented property. The problem with your attempt is, that you create a new MasterDetailpage instead of using the active one.



          Check if the current mainpage is a MasterDetailPage and change the presentation there:



          if (Application.Current.MainPage is MasterDetailPage mdp)

          mdp.IsPresented = true;



          Edit / important hint



          The above solution works only, if the current Mainpage is a MasterDetailPage. Otherwise you are not able to show the menu from the page.



          For a custom logic / custom slide-in/out menu, checkout the Nuget-Package "SlideOverKit".






          share|improve this answer

























          • the page where I use button is a Detail page. From there I wanto present menu.

            – doxsi
            Nov 15 '18 at 8:46











          • But your DetailPage is part of a MasterDetailPage. Right? If so, try the code in my answer. The code checks the current MainPage for MasterDetailpage.

            – Joehl
            Nov 15 '18 at 8:59












          • Tx. Putting your code on my Handle_Tapped, if clause is false. So my main page is not Masterdetail.

            – doxsi
            Nov 15 '18 at 9:02











          • So I misunderstood you. Can you change the Navigation to use a MasterDetailPage as a parent? Instead of directly navigating to your DetailPage? That would be the right way. Otherwise you have to implement a custom logic to show a custom menu (I edited my answer)

            – Joehl
            Nov 15 '18 at 9:30












          • @doxsi Can you mark these answer as accepted (if it helped you). then it is easy for others to find a solution as well. Tanks

            – Joehl
            Nov 19 '18 at 7:54













          1












          1








          1







          You should be able to change the presentation via the IsPresented property. The problem with your attempt is, that you create a new MasterDetailpage instead of using the active one.



          Check if the current mainpage is a MasterDetailPage and change the presentation there:



          if (Application.Current.MainPage is MasterDetailPage mdp)

          mdp.IsPresented = true;



          Edit / important hint



          The above solution works only, if the current Mainpage is a MasterDetailPage. Otherwise you are not able to show the menu from the page.



          For a custom logic / custom slide-in/out menu, checkout the Nuget-Package "SlideOverKit".






          share|improve this answer















          You should be able to change the presentation via the IsPresented property. The problem with your attempt is, that you create a new MasterDetailpage instead of using the active one.



          Check if the current mainpage is a MasterDetailPage and change the presentation there:



          if (Application.Current.MainPage is MasterDetailPage mdp)

          mdp.IsPresented = true;



          Edit / important hint



          The above solution works only, if the current Mainpage is a MasterDetailPage. Otherwise you are not able to show the menu from the page.



          For a custom logic / custom slide-in/out menu, checkout the Nuget-Package "SlideOverKit".







          share|improve this answer














          share|improve this answer



          share|improve this answer








          edited Nov 15 '18 at 9:31

























          answered Nov 15 '18 at 8:38









          JoehlJoehl

          2,64431741




          2,64431741












          • the page where I use button is a Detail page. From there I wanto present menu.

            – doxsi
            Nov 15 '18 at 8:46











          • But your DetailPage is part of a MasterDetailPage. Right? If so, try the code in my answer. The code checks the current MainPage for MasterDetailpage.

            – Joehl
            Nov 15 '18 at 8:59












          • Tx. Putting your code on my Handle_Tapped, if clause is false. So my main page is not Masterdetail.

            – doxsi
            Nov 15 '18 at 9:02











          • So I misunderstood you. Can you change the Navigation to use a MasterDetailPage as a parent? Instead of directly navigating to your DetailPage? That would be the right way. Otherwise you have to implement a custom logic to show a custom menu (I edited my answer)

            – Joehl
            Nov 15 '18 at 9:30












          • @doxsi Can you mark these answer as accepted (if it helped you). then it is easy for others to find a solution as well. Tanks

            – Joehl
            Nov 19 '18 at 7:54

















          • the page where I use button is a Detail page. From there I wanto present menu.

            – doxsi
            Nov 15 '18 at 8:46











          • But your DetailPage is part of a MasterDetailPage. Right? If so, try the code in my answer. The code checks the current MainPage for MasterDetailpage.

            – Joehl
            Nov 15 '18 at 8:59












          • Tx. Putting your code on my Handle_Tapped, if clause is false. So my main page is not Masterdetail.

            – doxsi
            Nov 15 '18 at 9:02











          • So I misunderstood you. Can you change the Navigation to use a MasterDetailPage as a parent? Instead of directly navigating to your DetailPage? That would be the right way. Otherwise you have to implement a custom logic to show a custom menu (I edited my answer)

            – Joehl
            Nov 15 '18 at 9:30












          • @doxsi Can you mark these answer as accepted (if it helped you). then it is easy for others to find a solution as well. Tanks

            – Joehl
            Nov 19 '18 at 7:54
















          the page where I use button is a Detail page. From there I wanto present menu.

          – doxsi
          Nov 15 '18 at 8:46





          the page where I use button is a Detail page. From there I wanto present menu.

          – doxsi
          Nov 15 '18 at 8:46













          But your DetailPage is part of a MasterDetailPage. Right? If so, try the code in my answer. The code checks the current MainPage for MasterDetailpage.

          – Joehl
          Nov 15 '18 at 8:59






          But your DetailPage is part of a MasterDetailPage. Right? If so, try the code in my answer. The code checks the current MainPage for MasterDetailpage.

          – Joehl
          Nov 15 '18 at 8:59














          Tx. Putting your code on my Handle_Tapped, if clause is false. So my main page is not Masterdetail.

          – doxsi
          Nov 15 '18 at 9:02





          Tx. Putting your code on my Handle_Tapped, if clause is false. So my main page is not Masterdetail.

          – doxsi
          Nov 15 '18 at 9:02













          So I misunderstood you. Can you change the Navigation to use a MasterDetailPage as a parent? Instead of directly navigating to your DetailPage? That would be the right way. Otherwise you have to implement a custom logic to show a custom menu (I edited my answer)

          – Joehl
          Nov 15 '18 at 9:30






          So I misunderstood you. Can you change the Navigation to use a MasterDetailPage as a parent? Instead of directly navigating to your DetailPage? That would be the right way. Otherwise you have to implement a custom logic to show a custom menu (I edited my answer)

          – Joehl
          Nov 15 '18 at 9:30














          @doxsi Can you mark these answer as accepted (if it helped you). then it is easy for others to find a solution as well. Tanks

          – Joehl
          Nov 19 '18 at 7:54





          @doxsi Can you mark these answer as accepted (if it helped you). then it is easy for others to find a solution as well. Tanks

          – Joehl
          Nov 19 '18 at 7:54



















          draft saved

          draft discarded
















































          Thanks for contributing an answer to Stack Overflow!


          • Please be sure to answer the question. Provide details and share your research!

          But avoid


          • Asking for help, clarification, or responding to other answers.

          • Making statements based on opinion; back them up with references or personal experience.

          To learn more, see our tips on writing great answers.




          draft saved


          draft discarded














          StackExchange.ready(
          function ()
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53315125%2fxamarin-forms-open-menu-by-custom-button-in-masterdetail-based-project%23new-answer', 'question_page');

          );

          Post as a guest















          Required, but never shown





















































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown

































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown







          這個網誌中的熱門文章

          Barbados

          How to read a connectionString WITH PROVIDER in .NET Core?

          Node.js Script on GitHub Pages or Amazon S3