在 XAML 中实施 IE/Microsoft 边缘底栏

Implement IE/Microsoft Edge bottom bar in XAML

我是 Windows phone 上浏览器的超级粉丝,我想为我的应用程序移植一个类似的底部栏。现在,我使用的是标准 CommandBar.

<Page.BottomAppBar>
    <CommandBar>
        <AppBarButton Icon="Go" Click="Go"/>
        <CommandBar.SecondaryCommands>
            <AppBarButton Icon="Setting" Label="Settings" Click="ShowSettings"/>
        </CommandBar.SecondaryCommands>
    </CommandBar>
</Page.BottomAppBar>

由于这会浪费屏幕 space,我真的很想利用剩余的 space 栏来添加应用状态之类的东西(代替 [=27= 的地址栏) ]),类似于 download/upload 进度。不幸的是,CommandBar 不允许引入像 TextBlockProgressRing 这样的东西。要使用这些控件,我们需要改为 AppBar。但是,我无法使用 CommandBar 的功能,例如添加 3 个点按钮来打开隐藏按钮。

有没有一种简单的方法可以实现这一目标,即结合 AppBar 的灵​​活性和 CommandBar 的 3 点功能?

CommandBar 只接受继承 ICommandBarElement 接口的控件。

我们可以创建一个继承ICommandBarElement的UserControl,简单地做了一个小测试,没有优化代码,看看是否有帮助:

public sealed partial class MyUserControl1 : UserControl, ICommandBarElement
{
    public MyUserControl1()
    {
        this.InitializeComponent();
    }
    private bool _IsCompact = true;
    bool ICommandBarElement.IsCompact
    {
        get
        {
            return _IsCompact;
        }

        set
        {
            _IsCompact = value;
        }
    }
}

还有用户控件XAML:

<UserControl
x:Class="App10.MyUserControl1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:App10"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
d:DesignWidth="400" Height="38.027">

<Grid>
    <TextBlock Foreground="DarkBlue">asdsadasdasdasdasda</TextBlock>
</Grid>

然后我们在 CommandBar 中使用 userControl,我们开始: http://i.stack.imgur.com/Bgug9.png

注意:请进一步优化,例如注册一些Text依赖属性以启用接受数据绑定。

根据 documentation on MSDN,您可以使用 CommandBar.Content 属性,它对应于任何主要命令一侧的空白区域。要更改内容的对齐方式,您需要更改 CommandBar.HorizontalContentAlignment 属性.

    <CommandBar HorizontalContentAlignment="Stretch">
        <AppBarButton Icon="Go" Click="Go"/>
        <CommandBar.SecondaryCommands>
            <AppBarButton Icon="Setting" Label="Settings" Click="ShowSettings"/>
        </CommandBar.SecondaryCommands>
        <CommandBar.Content>
            <Grid>
                <TextBox HorizontalAlignment="Stretch"
                     VerticalAlignment="Top"
                     Margin="12,8"/>
            </Grid>
        </CommandBar.Content>
    </CommandBar>

从 Win10 开始,建议将 CommandBar 置于内联位置,而不是使用 Page.TopAppBar 或 Page.BottomAppBar 属性。您可能仍想使用 Page.BottomAppBar 属性 的一种情况是确保 CommandBar 在软件键盘出现时保持可见。