Splitview Pane & Page CommandBar & Keyboard 相互重叠

Splitview Pane & Page CommandBar & Keyboard overlaps each other

当我使用 SplitView 和 CommandBar 时,我将 CommandBar 放在 Page.BottomAppBar 中,但 CommandBar 与 SplitView Pane 重叠。所以我将 CommandBar 移动到页面的内容(如:)。有效。

但这需要一个新问题。在页面中显示键盘时,键盘与 CommandBar 重叠。我想在键盘为 showing.How 时显示 CommandBar,可以吗?

这里可以给个workground,可能有点duffer,但是可以解决你的问题

由于Page.BottomAppBar中的CommandBar在软键盘可见时不会隐藏,而是与SplitView Pane重叠,我们可以保留Grid内容中的CommandBar,但是复制这个 CommandBar 并把它放到 Page.BottomAppBar 中,同时让它首先折叠起来,例如像这样:

<Page.BottomAppBar>
    <CommandBar x:Name="AppCommandBarCopy" Visibility="Collapsed">
        <CommandBar.PrimaryCommands>
            <AppBarButton Name="SaveCopy"
                          Icon="Save"
                          Label="Save"></AppBarButton>
            <AppBarButton Name="ClearCopy"
                          Icon="ClearSelection"
                          Label="Clear"></AppBarButton>
        </CommandBar.PrimaryCommands>
    </CommandBar>
</Page.BottomAppBar>

然后在后面的代码中,我们可以检测软键盘是否可见,如果键盘可见,则显示此文案;如果没有,请隐藏此副本,例如此处:

public SplitViewCommandBarKeyboard()
{
    this.InitializeComponent();
    InputPane.GetForCurrentView().Showing += OnKeyboardShowing;
    InputPane.GetForCurrentView().Hiding += OnKeyboardHidding;
}

private void OnKeyboardHidding(InputPane sender, InputPaneVisibilityEventArgs args)
{
    AppCommandBarCopy.Visibility = Visibility.Collapsed;
}

private void OnKeyboardShowing(InputPane sender, InputPaneVisibilityEventArgs args)
{
    AppCommandBarCopy.Visibility = Visibility.Visible;
}