Wpf MVVM中带有用户控件的幻灯片导航

Wpf MVVM中带有用户控件的幻灯片导航,wpf,mvvm,user-controls,navigation,Wpf,Mvvm,User Controls,Navigation,我正在WPF中开发一个MVVM应用程序。 在我的项目中,我有一个主窗口和许多用户控件。 必须使用主窗口来承载用户控件。 我想设置一个系统,可以让我在不同的用户控件之间导航,并具有幻灯片效果。 主窗口不包含任何导航按钮。 所有导航按钮都位于不同的用户控件上。 例如,我在用户控件a上有一个按钮(按钮a)。单击此按钮时,我希望从用户控件a切换到用户控件B(具有滑动效果)。 用户控件B也有一个导航按钮,按钮B。当我点击按钮B时,我想切换到用户控件“X”(“X”是指它可以是任何用户控件),等等。。。 我想

我正在WPF中开发一个MVVM应用程序。 在我的项目中,我有一个主窗口和许多用户控件。 必须使用主窗口来承载用户控件。 我想设置一个系统,可以让我在不同的用户控件之间导航,并具有幻灯片效果。 主窗口不包含任何导航按钮。 所有导航按钮都位于不同的用户控件上。 例如,我在用户控件a上有一个按钮(按钮a)。单击此按钮时,我希望从用户控件a切换到用户控件B(具有滑动效果)。 用户控件B也有一个导航按钮,按钮B。当我点击按钮B时,我想切换到用户控件“X”(“X”是指它可以是任何用户控件),等等。。。 我想开发一种“导航服务”,其中包含以下功能:

NavigationService.SlideTo(new UserControlX(), Directions.LeftToRight);

我知道这会很困难,但我想提出一些想法或建议,在保持MVVM模型的同时,我必须以何种方式工作。

您可以使用Prism Region:

  • 在主窗口中创建一个区域

    <ContentControl prism:RegionManager.RegionName="MainRegion" x:Name="MainRegion" />
    
    
    
  • 使用RegionManager,通过单击按钮的图标导航到不同的用户控件

    var regionManager = ServiceLocator.Current.GetInstance<IRegionManager>();
    regionManager.RequestNavigate("MainRegion", "UserControlName");//good practice to use fully qualified usercontrol name like "namespace.UserControlName"
    
    var regionManager=ServiceLocator.Current.GetInstance();
    RequestNavigate(“MainRegion”、“UserControlName”)//使用完全限定的usercontrol名称(如“namespace.UserControlName”)的良好实践
    
  • 对于滑动效果,请在用户控件中尝试类似的操作(甚至可以尝试不同的动画样式,这只是一个示例):

    
    

  • 希望对您有所帮助……

    您可以使用棱镜区域:

  • 在主窗口中创建一个区域

    <ContentControl prism:RegionManager.RegionName="MainRegion" x:Name="MainRegion" />
    
    
    
  • 使用RegionManager,通过单击按钮的图标导航到不同的用户控件

    var regionManager = ServiceLocator.Current.GetInstance<IRegionManager>();
    regionManager.RequestNavigate("MainRegion", "UserControlName");//good practice to use fully qualified usercontrol name like "namespace.UserControlName"
    
    var regionManager=ServiceLocator.Current.GetInstance();
    RequestNavigate(“MainRegion”、“UserControlName”)//使用完全限定的usercontrol名称(如“namespace.UserControlName”)的良好实践
    
  • 对于滑动效果,请在用户控件中尝试类似的操作(甚至可以尝试不同的动画样式,这只是一个示例):

    
    

  • 希望它有帮助……

    它似乎不适用于.net4(或者至少一个,如果它的依赖项不适用)。它似乎不适用于.net4(或者至少一个,如果它的依赖项不适用)。