【问题标题】:Slide navigation with user controls in MVVM在 MVVM 中使用用户控件进行滑动导航
【发布时间】:2013-08-17 21:46:00
【问题描述】:

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

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

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

【问题讨论】:

    标签: wpf mvvm user-controls navigation


    【解决方案1】:

    您可以使用棱镜区域:Prism MSDN link

    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>
      

    希望对你有帮助...

    【讨论】:

    • 它似乎不适用于 .net4(或者至少一个如果它的依赖项不起作用)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多