使用MVVM中的用户控件滑动导航

时间:2013-08-15 16:28:11

标签: wpf mvvm user-controls navigation

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

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

我知道这很难,但我想在保持MVVM模型的同时,有一些想法或建议我必须工作。

1 个答案:

答案 0 :(得分:1)

您可以使用Prism Region:Prism MSDN link

  1. 在主窗口中创建一个区域

    <ContentControl prism:RegionManager.RegionName="MainRegion" x:Name="MainRegion" />
    
  2. 使用RegionManager导航到按钮的单击cammand上的不同用户控件

    var regionManager = ServiceLocator.Current.GetInstance<IRegionManager>();
    regionManager.RequestNavigate("MainRegion", "UserControlName");//good practice to use fully qualified usercontrol name like "namespace.UserControlName"
    
  3. 对于滑动效果在用户控件中尝试类似这样的(甚至可以尝试不同的动画样式,这只是一个示例):

    <UserControl.Triggers>
        <EventTrigger RoutedEvent="Control.Loaded">
            <BeginStoryboard>
                <Storyboard >
                    <ThicknessAnimation Duration="0:0:.8" Storyboard.TargetProperty="Margin" From="1920,0,0,0" To="0" AccelerationRatio=".1"/>
                </Storyboard>
            </BeginStoryboard>
        </EventTrigger>
    </UserControl.Triggers>
    
  4. 希望它有所帮助...