我正在WPF中开发MVVM应用程序。 在我的项目中,我有一个主窗口和许多用户控件。 主窗口必须用于托管用户控件。 我想设置一个系统,它允许我使用幻灯片效果在不同的用户控件之间导航。 主窗口不包含导航按钮。 所有导航按钮都在不同的用户控件上。 例如,我在用户控件A上有一个按钮(按钮A)。当我单击此按钮时,我想从用户控件A切换到用户控件B(具有幻灯片效果)。 用户控件B也有一个导航按钮,按钮B.当我点击按钮B时,我想切换到用户控件“X”(“X”表示它可以是任何用户控件)等... 我想开发一种“导航服务”,其中会有如下功能:
NavigationService.SlideTo(new UserControlX(), Directions.LeftToRight);
我知道这很难,但我想在保持MVVM模型的同时,有一些想法或建议我必须工作。
答案 0 :(得分:1)
您可以使用Prism Region:Prism MSDN link
在主窗口中创建一个区域
<ContentControl prism:RegionManager.RegionName="MainRegion" x:Name="MainRegion" />
使用RegionManager导航到按钮的单击cammand上的不同用户控件
var regionManager = ServiceLocator.Current.GetInstance<IRegionManager>();
regionManager.RequestNavigate("MainRegion", "UserControlName");//good practice to use fully qualified usercontrol name like "namespace.UserControlName"
对于滑动效果在用户控件中尝试类似这样的(甚至可以尝试不同的动画样式,这只是一个示例):
<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>
希望它有所帮助...