Splitview Pane& Page CommandBar&键盘相互重叠

时间:2016-09-11 16:49:40

标签: uwp commandbar splitview

当我使用SplitView和CommandBar时,我将CommandBar放在Page.BottomAppBar中,但CommandBar重叠了SplitView窗格。所以我将CommandBar移动到页面的内容(例如:Page command bar overlaps Splitview Pane)。它正在工作。

但这需要一个新问题。当键盘显示在页面中时,键盘与CommandBar重叠。我想在键盘显示时显示CommandBar。我该怎么办?

1 个答案:

答案 0 :(得分:3)

我可以在这里给一个工作台,也许它有点粗鲁,但它可以解决你的问题。

由于软件键盘可见时Page.BottomAppBar中的CommandBar不会受到影响,但它与SplitView窗格重叠,我们可以将CommandBar保留在Grid的内容中,但是这个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;
}