UWP NavigationView navigation via MVVM












1














I am using as main control in my app NavigationView and have Frame where page is loading.



<NavigationView x:Name="MyNavView" IsBackButtonVisible="Collapsed" SelectionChanged="{x:Bind ViewModel.OnSelectionChanged}" PaneDisplayMode="Top">
<NavigationView.MenuItems>
<NavigationViewItem Icon="Contact" Content="Contact" Tag="MasterDetailPage"/>
<NavigationViewItem Icon="Favorite" Content="Favorites" Tag="FavoritesPage"/>
</NavigationView.MenuItems>
<Frame x:Name="RootFrame"/>
</NavigationView>


There are two events SelectionChanged and ItemInvoked that make available to realise navigation to pages that loading in RootFrame (name of my frame). But I want to use Command to make MVVM. And I have not found Command prop even for NavigationView itself or for NavigationViewItem. After that I have handled SelectionChanged event in ViewModel but at my view it contradicts MVVM.



So,how can I make MVVM using Command? If there is no such opportunity tell how to realise MVVM itself not handling event.










share|improve this question









New contributor




Allaev Bekzod is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
















  • 1




    FWIW, it's still MVVM compliant if you handle the selection change event in your view, that simply forwards the appropriate information to a method on your ViewModel. No need to over complicate anything.
    – Johnny Westlake
    yesterday












  • You already have your ViewModel referenced in your code-behind in order to use x:Bind, so I can't think of any reason whatsoever why you can't just use the code-behind event handlers. This does not violate MVVM, not even a little. That said, Xaml Behaviors can probably do what you want.
    – Sean O'Neil
    yesterday










  • You are wright @SeanO'Neil ,that behavior make able what I am going to do.I made MVVM with Command using EventToCommand from this nuget package.
    – Allaev Bekzod
    19 hours ago


















1














I am using as main control in my app NavigationView and have Frame where page is loading.



<NavigationView x:Name="MyNavView" IsBackButtonVisible="Collapsed" SelectionChanged="{x:Bind ViewModel.OnSelectionChanged}" PaneDisplayMode="Top">
<NavigationView.MenuItems>
<NavigationViewItem Icon="Contact" Content="Contact" Tag="MasterDetailPage"/>
<NavigationViewItem Icon="Favorite" Content="Favorites" Tag="FavoritesPage"/>
</NavigationView.MenuItems>
<Frame x:Name="RootFrame"/>
</NavigationView>


There are two events SelectionChanged and ItemInvoked that make available to realise navigation to pages that loading in RootFrame (name of my frame). But I want to use Command to make MVVM. And I have not found Command prop even for NavigationView itself or for NavigationViewItem. After that I have handled SelectionChanged event in ViewModel but at my view it contradicts MVVM.



So,how can I make MVVM using Command? If there is no such opportunity tell how to realise MVVM itself not handling event.










share|improve this question









New contributor




Allaev Bekzod is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
















  • 1




    FWIW, it's still MVVM compliant if you handle the selection change event in your view, that simply forwards the appropriate information to a method on your ViewModel. No need to over complicate anything.
    – Johnny Westlake
    yesterday












  • You already have your ViewModel referenced in your code-behind in order to use x:Bind, so I can't think of any reason whatsoever why you can't just use the code-behind event handlers. This does not violate MVVM, not even a little. That said, Xaml Behaviors can probably do what you want.
    – Sean O'Neil
    yesterday










  • You are wright @SeanO'Neil ,that behavior make able what I am going to do.I made MVVM with Command using EventToCommand from this nuget package.
    – Allaev Bekzod
    19 hours ago
















1












1








1







I am using as main control in my app NavigationView and have Frame where page is loading.



<NavigationView x:Name="MyNavView" IsBackButtonVisible="Collapsed" SelectionChanged="{x:Bind ViewModel.OnSelectionChanged}" PaneDisplayMode="Top">
<NavigationView.MenuItems>
<NavigationViewItem Icon="Contact" Content="Contact" Tag="MasterDetailPage"/>
<NavigationViewItem Icon="Favorite" Content="Favorites" Tag="FavoritesPage"/>
</NavigationView.MenuItems>
<Frame x:Name="RootFrame"/>
</NavigationView>


There are two events SelectionChanged and ItemInvoked that make available to realise navigation to pages that loading in RootFrame (name of my frame). But I want to use Command to make MVVM. And I have not found Command prop even for NavigationView itself or for NavigationViewItem. After that I have handled SelectionChanged event in ViewModel but at my view it contradicts MVVM.



So,how can I make MVVM using Command? If there is no such opportunity tell how to realise MVVM itself not handling event.










share|improve this question









New contributor




Allaev Bekzod is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.











I am using as main control in my app NavigationView and have Frame where page is loading.



<NavigationView x:Name="MyNavView" IsBackButtonVisible="Collapsed" SelectionChanged="{x:Bind ViewModel.OnSelectionChanged}" PaneDisplayMode="Top">
<NavigationView.MenuItems>
<NavigationViewItem Icon="Contact" Content="Contact" Tag="MasterDetailPage"/>
<NavigationViewItem Icon="Favorite" Content="Favorites" Tag="FavoritesPage"/>
</NavigationView.MenuItems>
<Frame x:Name="RootFrame"/>
</NavigationView>


There are two events SelectionChanged and ItemInvoked that make available to realise navigation to pages that loading in RootFrame (name of my frame). But I want to use Command to make MVVM. And I have not found Command prop even for NavigationView itself or for NavigationViewItem. After that I have handled SelectionChanged event in ViewModel but at my view it contradicts MVVM.



So,how can I make MVVM using Command? If there is no such opportunity tell how to realise MVVM itself not handling event.







c# mvvm uwp navigation






share|improve this question









New contributor




Allaev Bekzod is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.











share|improve this question









New contributor




Allaev Bekzod is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.









share|improve this question




share|improve this question








edited yesterday





















New contributor




Allaev Bekzod is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.









asked yesterday









Allaev Bekzod

62




62




New contributor




Allaev Bekzod is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.





New contributor





Allaev Bekzod is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.






Allaev Bekzod is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.








  • 1




    FWIW, it's still MVVM compliant if you handle the selection change event in your view, that simply forwards the appropriate information to a method on your ViewModel. No need to over complicate anything.
    – Johnny Westlake
    yesterday












  • You already have your ViewModel referenced in your code-behind in order to use x:Bind, so I can't think of any reason whatsoever why you can't just use the code-behind event handlers. This does not violate MVVM, not even a little. That said, Xaml Behaviors can probably do what you want.
    – Sean O'Neil
    yesterday










  • You are wright @SeanO'Neil ,that behavior make able what I am going to do.I made MVVM with Command using EventToCommand from this nuget package.
    – Allaev Bekzod
    19 hours ago
















  • 1




    FWIW, it's still MVVM compliant if you handle the selection change event in your view, that simply forwards the appropriate information to a method on your ViewModel. No need to over complicate anything.
    – Johnny Westlake
    yesterday












  • You already have your ViewModel referenced in your code-behind in order to use x:Bind, so I can't think of any reason whatsoever why you can't just use the code-behind event handlers. This does not violate MVVM, not even a little. That said, Xaml Behaviors can probably do what you want.
    – Sean O'Neil
    yesterday










  • You are wright @SeanO'Neil ,that behavior make able what I am going to do.I made MVVM with Command using EventToCommand from this nuget package.
    – Allaev Bekzod
    19 hours ago










1




1




FWIW, it's still MVVM compliant if you handle the selection change event in your view, that simply forwards the appropriate information to a method on your ViewModel. No need to over complicate anything.
– Johnny Westlake
yesterday






FWIW, it's still MVVM compliant if you handle the selection change event in your view, that simply forwards the appropriate information to a method on your ViewModel. No need to over complicate anything.
– Johnny Westlake
yesterday














You already have your ViewModel referenced in your code-behind in order to use x:Bind, so I can't think of any reason whatsoever why you can't just use the code-behind event handlers. This does not violate MVVM, not even a little. That said, Xaml Behaviors can probably do what you want.
– Sean O'Neil
yesterday




You already have your ViewModel referenced in your code-behind in order to use x:Bind, so I can't think of any reason whatsoever why you can't just use the code-behind event handlers. This does not violate MVVM, not even a little. That said, Xaml Behaviors can probably do what you want.
– Sean O'Neil
yesterday












You are wright @SeanO'Neil ,that behavior make able what I am going to do.I made MVVM with Command using EventToCommand from this nuget package.
– Allaev Bekzod
19 hours ago






You are wright @SeanO'Neil ,that behavior make able what I am going to do.I made MVVM with Command using EventToCommand from this nuget package.
– Allaev Bekzod
19 hours ago














2 Answers
2






active

oldest

votes


















0














Try to use Windows Template Studio, its solved my problem when combining NavigationView with MVVM






share|improve this answer





























    0














    In order to see how to properly use the NavigationView control (including the Data Binding case), please refer to the companion app called XAML Controls Gallery, available in the Windows Store, by Microsoft.



    Best regards






    share|improve this answer





















      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
      });


      }
      });






      Allaev Bekzod is a new contributor. Be nice, and check out our Code of Conduct.










      draft saved

      draft discarded


















      StackExchange.ready(
      function () {
      StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53944523%2fuwp-navigationview-navigation-via-mvvm%23new-answer', 'question_page');
      }
      );

      Post as a guest















      Required, but never shown

























      2 Answers
      2






      active

      oldest

      votes








      2 Answers
      2






      active

      oldest

      votes









      active

      oldest

      votes






      active

      oldest

      votes









      0














      Try to use Windows Template Studio, its solved my problem when combining NavigationView with MVVM






      share|improve this answer


























        0














        Try to use Windows Template Studio, its solved my problem when combining NavigationView with MVVM






        share|improve this answer
























          0












          0








          0






          Try to use Windows Template Studio, its solved my problem when combining NavigationView with MVVM






          share|improve this answer












          Try to use Windows Template Studio, its solved my problem when combining NavigationView with MVVM







          share|improve this answer












          share|improve this answer



          share|improve this answer










          answered yesterday









          Firman Zulkarnain

          214




          214

























              0














              In order to see how to properly use the NavigationView control (including the Data Binding case), please refer to the companion app called XAML Controls Gallery, available in the Windows Store, by Microsoft.



              Best regards






              share|improve this answer


























                0














                In order to see how to properly use the NavigationView control (including the Data Binding case), please refer to the companion app called XAML Controls Gallery, available in the Windows Store, by Microsoft.



                Best regards






                share|improve this answer
























                  0












                  0








                  0






                  In order to see how to properly use the NavigationView control (including the Data Binding case), please refer to the companion app called XAML Controls Gallery, available in the Windows Store, by Microsoft.



                  Best regards






                  share|improve this answer












                  In order to see how to properly use the NavigationView control (including the Data Binding case), please refer to the companion app called XAML Controls Gallery, available in the Windows Store, by Microsoft.



                  Best regards







                  share|improve this answer












                  share|improve this answer



                  share|improve this answer










                  answered yesterday









                  LucaLindholm

                  331213




                  331213






















                      Allaev Bekzod is a new contributor. Be nice, and check out our Code of Conduct.










                      draft saved

                      draft discarded


















                      Allaev Bekzod is a new contributor. Be nice, and check out our Code of Conduct.













                      Allaev Bekzod is a new contributor. Be nice, and check out our Code of Conduct.












                      Allaev Bekzod is a new contributor. Be nice, and check out our Code of Conduct.
















                      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.





                      Some of your past answers have not been well-received, and you're in danger of being blocked from answering.


                      Please pay close attention to the following guidance:


                      • 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%2f53944523%2fuwp-navigationview-navigation-via-mvvm%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







                      Popular posts from this blog

                      Angular Downloading a file using contenturl with Basic Authentication

                      Olmecas

                      Can't read property showImagePicker of undefined in react native iOS