防止Splitview窗格关闭和关闭动画

3

有没有一种方法可以防止UWP Splitview在满足某些条件时关闭?我已经实现了以下PropertyChange回调:

MySplitView.RegisterPropertyChangedCallback(SplitView.IsPaneOpenProperty, MySplitViewPaneOpenPropertyChanged);

这看起来像这样:

private void MySplitViewPaneOpenPropertyChanged(DependencyObject sender, DependencyProperty dp)
    {
        if (preventClose == true)
        {
            TrashSplitView.IsPaneOpen = true;
        }
    }

这段代码保持了分割视图面板的打开状态,但会开始短暂的动画。有没有办法防止动画启动?


1
我所看到的唯一方法是使用DisplayMode="Inline"而不是"Overlay"。但如果你需要内联模式,这就没用了。 - Thomas Schneiter
我终于想通了!请查看我发布的答案。感谢您的评论。 - Allen Rufolo
1个回答

5

经过对Splitview的方法和事件进行进一步研究,我找到了一个简单的解决办法。希望这个答案能帮助其他尝试做同样事情的人。

Splitview类中有一个名为“PaneClosing”的事件。

<Splitview PaneClosing="SplitView_PaneClosing"/>

在事件处理程序中,您可以像这样完全取消此关闭动画:
private void SplitView_PaneClosing(SplitView sender, SplitViewPaneClosingEventArgs args)
{
    if (preventClose == true)
    {
        args.Cancel = true;
    }
}

1
哈哈,我刚找到了这个解决方案,当我回来的时候,你已经自己解决了它。 - Thomas Schneiter
经过多次尝试,我确定只有在 SplitViewPaneClosingEventArgs 的 DisplayMode 为 Overlay 或 CompactOverlay 且面板通过用户与轻量级关闭层交互关闭时,才能通过该事件取消。但是当面板通过编程方式关闭(即使用 IsPaneOpen = false)时,该方法无效。 - Will
对我来说,这使得整个围绕分割视图窗格的用户界面都不负责任何用户输入。 - AtosNicoS

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接