1

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

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

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

4

1 回答 1

1

您可以使用 Prism 区域:Prism MSDN 链接

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

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

    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>
    

希望能帮助到你 ...

于 2013-08-15T19:16:36.040 回答