在 UWP 中为页面导航转换创建自定义 NavigationTransitionInfo

Create customized NavigationTransitionInfo for Page Navigation Transitions in UWP

我正在开发通用 Windows (UWP) 应用程序,我想向我的页面添加一些页面 NavigationTransitions。 我知道我可以像下面的代码一样使用默认的 NavigationThemeTransition:

<Page.Transitions>
    <TransitionCollection>
        <NavigationThemeTransition>
            <NavigationThemeTransition.DefaultNavigationTransitionInfo>
                <CommonNavigationTransitionInfo/>
            </NavigationThemeTransition.DefaultNavigationTransitionInfo>
        </NavigationThemeTransition>
    </TransitionCollection>
</Page.Transitions>

但是我想创建自己的 Navigation Transition,我搜索了很多次都没有结果。 我还尝试获取默认导航的定义,并且能够编写如下代码,但不知道必须在代码块中编写什么。有什么帮助吗?

  using Windows.UI.Xaml;
  using Windows.UI.Xaml.Media.Animation;
  using Windows.UI.Xaml.Controls.Primitives;

  namespace BindingSample2
  {
    internal interface IWikiSedaNavigationTransitionInfo
    {
        System.Boolean IsStaggeringEnabled { get; set; }
    }
    public sealed class WikiSedaNavigationTransitionInfo : NavigationTransitionInfo, IWikiSedaNavigationTransitionInfo
    {
        //
        // Summary:
        //     Initializes a new instance of the WikiSedaNavigationTransitionInfo class.
        public WikiSedaNavigationTransitionInfo()
        {
            var a = this.GetNavigationStateCore();
            var s = this.MemberwiseClone();
            // NavigationThemeTransition theme = new NavigationThemeTransition();

            var themeR = new EdgeUIThemeTransition();

            themeR.Edge = EdgeTransitionLocation.Bottom;

            //Transitions = collection;
        }

        // Summary:
        //     Identifies the CommonNavigationTransitionInfo.IsStaggerElement attached property.
        //
        // Returns:
        //     The identifier for the CommonNavigationTransitionInfo.IsStaggerElement attached
        //     property.
        public static DependencyProperty IsStaggerElementProperty { get; }

        // Summary:
        //     Identifies the IsStaggeringEnabled dependency property.
        //
        // Returns:
        //     The identifier for the IsStaggeringEnabled dependency property.
        public static DependencyProperty IsStaggeringEnabledProperty { get; }

        // Summary:
        //     Gets or sets a Boolean value indicating if staggering is enabled for the navigation
        //     transition.
        //
        // Returns:
        //     A Boolean value indicating if staggering is enabled for the navigation transition.
        public System.Boolean IsStaggeringEnabled { get; set; }

        // Summary:
        //     Returns a Boolean value indicating if the specified UIElement is the stagger
        //     element for the navigation transition.
        //
        // Parameters:
        //   element:
        //     The UIElement to check as being the stagger element.
        //
        // Returns:
        //     Returns true if element is the stagger element; otherwise false.
        public static System.Boolean GetIsStaggerElement(UIElement element)
        {
            return false;
        }

        // Summary:
        //     Sets a Boolean value indicating if the specified UIElement is the stagger element
        //     for the navigation transition.
        //
        // Parameters:
        //   element:
        //     The UIElement about which to set the stagger element indicator.
        //
        //   value:
        //     Set this value to true if element is the stagger element; otherwise set it to
        //     false.
        public static void SetIsStaggerElement(UIElement element, System.Boolean value)
        {

        }
    }
}

其实你可以在W10创意者更新中实现。看看this blog post I've just found on Twitter.